2012-07-03 119 views
0

我設置這樣的標記的自定義屬性..文本框自定義屬性爲空

<asp:TextBox runat="server" guid="" ID="txtlocation1" type="text" class="autocomplete short-field require" name="location1" autocomplete="off" datasource="locations" /> 

的Javascript設置它的價值,我想讀按鈕點擊這樣的價值...

var val = txtlocation1.Attributes["guid"]; 

我總是得到一個空字符串..任何想法? PS:我沒有在代碼中設置屬性。

+0

如果你沒有在代碼中設置屬性,並且在標記中你已經指定了它:guid =「」那你還期望什麼? –

回答

1

自定義屬性不會被髮送回服務器...您可以使用HiddenFeild控制,而不是來保存數據,並用JavaScript改變它,在服務器上,你會讀出更新後的值

2

這些屬性保留在ViewState中,因此在您的情況下將一個空字符串添加到ViewState中。在客戶端上設置屬性不會有任何影響,因爲只有文本(或值)屬性被髮回到服務器。該控件將重新創建服務器端,並且將重新應用ViewState,使您的GUID屬性再次爲空字符串。

我想你可以只爲你的GUID設置一個隱藏的表單字段。當按鈕被點擊時,它應該在服務器端提供正確的值。

1

文本框將推動任何它不直接識別客戶端的屬性;這是IAttributeAccessor接口的一個功能。但是,它們不會被髮送回服務器;一個文本框只會將其值屬性發送回服務器。使用<asp:HiddenField />控件或<input type="hidden" />將它們發回服務器。然後,您可以從隱藏字段中讀取已更改的值。