c#
  • asp.net
  • repeater
  • ascx
  • 2014-07-23 2 views 1 likes 
    1

    어디서 잘못되었는지 알 수 없으므로 도움이 필요합니다.리피터 내 사용자 정의 컨트롤에 값을 바인딩

    매개 변수가있는 사용자 지정 컨트롤을 리피터에 사용하려고합니다. 동일한 표현식이 이전 코드 행에서 데이터를 반환하더라도 매개 변수는 디버그 할 때 항상 null입니다. 나뿐만 아래의과마다 코드의 이전 라인을 만들어

    <mp:Historical runat="server" paddockName='<%# Eval("Name") %>' /> 
    

    :

    public string paddockName { get; set; } 
    

    그리고 나는 나의 asp.net 페이지에 할당하고 내 컨트롤 내부

    내가 가진 제대로 작동하므로 표현이 정확합니다.

    <asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>'></asp:Label> 
    

    나는 거의 정확하게 내 문제와 동일한 이전 질문 ASP.NET: Bind a value to a custom user control inside a repeater을 본 적이 있지만 대답은 말한다 "나는 작은 시험을했고, 나는 제품 ID가 문자열 인 경우이 작업 있어요." 디버깅 할 때 null이되는 것을 어떻게 막을 지 알아내는 데 도움이되지 않습니다.

    +0

    내가 게시 한 코드에 분명히 잘못된 것이 보이지 않습니다. 재산 가치를 어느 시점에서 확인하고 있습니까? –

    +0

    컨트롤의 버튼 onclick에서 속성 값을 확인하고 있습니다. pageload 나 그와 비슷한 것에서 clobbered되지 않는지 확인했습니다. 데이터 바인딩 대신 속성으로 문자열을 전달하면 잘 동작합니다. – nazaniel

    답변

    0

    문제는 단추 다시 게시가 발생하면 데이터 바인딩 값이 손실된다는 것입니다. 속성 값은 DataBind() 호출이있는 페이지 요청의 지속 기간에만 설정됩니다. 버튼 클릭은 새로운 페이지 요청입니다. .NET 컨트롤은 ViewState에 바인딩 된 값을 저장하여 포스트 백에서 사용할 수 있도록합니다. 속성 저장 방법을 변경하여 동일한 작업을 수행 할 수 있습니다.

    public string paddockName { 
        get { return Convert.ToString(ViewState("paddockName")); } 
        set { ViewState("paddockName") = value; } 
    } 
    
    관련 문제