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

    我看不到我在哪裏出錯了,所以我正在尋找一些幫助。將一個值綁定到一箇中繼器內的自定義控件

    我想用中繼器中的參數使用我的自定義控件。即使相同的表達式返回上一行代碼中的數據,該參數始終爲空。

    在我的控制,我有:

    public string paddockName { get; set; } 
    

    而且我爲我的asp.net頁面上分配給它:

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

    我做的代碼前行按以下,並工作得很好,所以表達是正確的。

    <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是一個字符串。」這並不能幫助我弄清楚在調試時如何避免它變爲空。

    +0

    我看不出任何明顯錯誤的代碼,你發佈。你在什麼時候檢查房產價值? –

    +0

    我正在檢查控件上按鈕的onclick屬性值。我已經檢查過,它沒有在頁面加載或類似的東西上被破壞 - 如果我通過一個字符串作爲屬性而不是數據綁定,它可以正常工作。 – nazaniel

    回答

    0

    問題是,當按鈕回發發生時,數據綁定值丟失。屬性值僅在具有DataBind()調用的頁面請求的持續時間內設置。按鈕點擊是一個新的頁面請求。 .NET控件將綁定值存儲在ViewState中,以便在回發中可用。您可以通過更改存儲屬性的方式來做同樣的事情。

    public string paddockName { 
        get { return Convert.ToString(ViewState("paddockName")); } 
        set { ViewState("paddockName") = value; } 
    } 
    
    相關問題