c#
  • asp.net
  • webforms
  • 2009-12-07 4 views 2 likes 
    2

    TextBox 컨트롤의 Text 속성을 변수 값으로 선언적으로 설정하려고합니다. 필자가 피하려고하는 코드 숨김 페이지에 배치하면 텍스트 속성을 설정할 수있는 유일한 방법입니다.TextBox 텍스트를 선언적으로 설정할 수 있습니까?

    나는 다음을 모두 수행하는 것을 시도했다 ,하지만 성공 :

    <asp:TextBox ID="myTxt" runat="server" Text='<%# MyNamespace.MyClass.StaticString %>' /> 
    <asp:TextBox ID="myTxt" runat="server" Text='<%= MyNamespace.MyClass.StaticString %>' /> 
    <asp:TextBox ID="myTxt" runat="server" Text='<% Response.Write(MyNamespace.MyClass.StaticString); %>' /> 
    <asp:TextBox ID="myTxt" runat="server" /><% myTxt.Text = MyNamespace.MyClass.StaticString; %> 
    

    이 가능하기 방법 그렇다면인가?

    +1

    왜 코드에서 값을 할당하지 않으려 고합니까? ASP.NET을 사용하면 최대한 많은 코드를 코드 뒤에 넣고 마크 업에서 이러한 종류의 것들을 지켜야합니다. –

    +0

    이것은 실험입니다. 여러 가지 이유로 MVC에 관심이있었습니다. 그러나 MVC는 많은 컨트롤, 특히 AJAX Control Toolkit 컨트롤을 선언적으로 사용하는 것을 허용하지 않습니다. JavaScript 코드를 사용하여 컨트롤을 만드는 것은 선언적이 아닙니다. 그래서 WebForms에서 MVC 프린시 펄 중 일부를 사용하여 실험하고 있습니다. –

    답변

    7

    이것이 최선의 방법입니다.

    <asp:TextBox ID="myTxt" runat="server" Text='<%# MyNamespace.MyClass.StaticString %>' /> 
    

    당신은 당신이 그것을 시도했지만 트릭은 당신이 페이지 자체에() 데이터 바인딩을 호출 할 필요가 말했다. < % # %>는 데이터 바인딩 식이며 DataBind()가 호출 될 때 값이 채워집니다.

    텍스트 상자 자체에서 DataBind를 호출 할 수 있지만 페이지를 호출하여 모든 것을 얻는 것이 좋습니다 (재귀 적으로 작동). 컨트롤에서 DataBind()를 여러 번 호출하면 목록에 데이터가 중복되는 등의 부정적인 결과를 초래할 수 있기 때문에 일관성을 유지하면서 페이지에서 호출하기를 원할 것입니다.

    +0

    PageLoad 이벤트에 Page.DataBind()를 추가하면 .aspx 페이지에서 바인딩식이 작동합니다. 나는 선언적으로 제어 값을 설정할 수 있도록하려면 Page.DataBind()를 코드 뒤에 추가하는 것이 좋습니다. 난 그냥 코드 숨김에 단일 값을 설정하는 것을 피하려고했습니다. –

    -1

    먼저 각 텍스트 상자에 고유 한 ID를 지정하십시오. ID는 페이지의 모든 요소에서 고유해야합니다.

    은 그런 뒤에 코드에서이 같은 넣을 수 있습니다 (페이지가 시작하기 위해로드 이벤트 TRY) :

    myTxt.Text = MyNamespace.MyClass.StaticString 
    

    편집 : 아직이 시도?

    <asp:TextBox ID="myTxt" runat="server"><% CodeBehind.FunctionOrProperty %></asp:TextBox> 
    
    +0

    모든 예제에서 알아두면 텍스트 상자에 ID가 있습니다. 또한, 나는 특히 코드에서이 값을 설정하는 것을 피하려고 노력하고있다. –

    +0

    ID는 각 텍스트 상자에서 동일한 값으로 반복되지 않고 고유해야합니다. –

    +0

    두 번째 것은 코드 숨김으로 할당을 오프로드합니다. 위 예제는 별도로 시도했지만 텍스트 상자는 동시에 시도하지 않고 각 줄마다 바뀌 었습니다. –

    0

    다음을 시도해보십시오.

    <asp:TextBox ID="myTxt" runat="server"></asp:TextBox> <% myTxt.Text= " Whatever you want" %> 
    
    +0

    이상하게도 작동하지 않습니까?! 원래 질문에 표시된대로 이미 시도했습니다. –

    관련 문제