我在这个标记中设置了一个自定义属性..
<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 :(得分:2)
属性保存在ViewState中,因此在您的案例中将空字符串添加到ViewState。在客户端上设置属性不会有任何影响,因为只有Text(或value)属性被发回服务器。控件将在服务器端重新创建,并且将重新应用ViewState,使您的GUID属性再次成为空字符串。
我想你可以在你的GUID中设置一个隐藏的表单字段。单击该按钮时,它应该在服务器端可用,并且值正确。
答案 1 :(得分:2)
Textbox会将任何无法识别的属性直接推送到客户端;这是IAttributeAccessor接口的一个功能。但是,它们不会被发送回服务器;文本框只会将其value属性发回服务器。使用<asp:HiddenField />
控件或<input type="hidden" />
将其发回服务器。然后,您可以从隐藏字段中读取更改的值。
答案 2 :(得分:1)
自定义属性不会被发送回服务器...您可以使用HiddenFeild控件来保存您的数据并使用javascript更改它,并且在服务器上您将读取更新的值