文本框自定义属性为空

问题描述:

我设置这样的标记的自定义属性..文本框自定义属性为空

<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 =“”那你还期望什么? –

自定义属性不会被发送回服务器...您可以使用HiddenFeild控制,而不是来保存数据,并用JavaScript改变它,在服务器上,你会读出更新后的值

这些属性保留在ViewState中,因此在您的情况下将一个空字符串添加到ViewState中。在客户端上设置属性不会有任何影响,因为只有文本(或值)属性被发回到服务器。该控件将重新创建服务器端,并且将重新应用ViewState,使您的GUID属性再次为空字符串。

我想你可以只为你的GUID设置一个隐藏的表单字段。当按钮被点击时,它应该在服务器端提供正确的值。

文本框将推动任何它不直接识别客户端的属性;这是IAttributeAccessor接口的一个功能。但是,它们不会被发送回服务器;一个文本框只会将其值属性发送回服务器。使用<asp:HiddenField />控件或<input type="hidden" />将它们发回服务器。然后,您可以从隐藏字段中读取已更改的值。