TextBox自定义属性为空

时间:2012-07-03 17:58:40

标签: c# asp.net postback webforms

我在这个标记中设置了一个自定义属性..

<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:我没有在代码中设置属性。

3 个答案:

答案 0 :(得分:2)

属性保存在ViewState中,因此在您的案例中将空字符串添加到ViewState。在客户端上设置属性不会有任何影响,因为只有Text(或value)属性被发回服务器。控件将在服务器端重新创建,并且将重新应用ViewState,使您的GUID属性再次成为空字符串。

我想你可以在你的GUID中设置一个隐藏的表单字段。单击该按钮时,它应该在服务器端可用,并且值正确。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

自定义属性不会被发送回服务器...您可以使用HiddenFeild控件来保存您的数据并使用javascript更改它,并且在服务器上您将读取更新的值