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

4

3 回答 3

2

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

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

于 2012-07-03T18:04:06.160 回答
2

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

于 2012-07-03T18:06:25.320 回答
1

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

于 2012-07-03T18:05:14.663 回答