【问题标题】:TextBox Custom Attribute is EmptyTextBox 自定义属性为空
【发布时间】:2012-07-03 17:58:40
【问题描述】:

我正在像这样在标记中设置自定义属性..

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

【问题讨论】:

  • 如果您没有在代码中设置属性,并且在标记中指定了它,如下所示:guid="" 那么您还期望什么?

标签: c# asp.net postback webforms


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 2020-01-07
        相关资源
        最近更新 更多