在服务器端获取客户端只读属性?

时间:2014-12-01 20:21:09

标签: asp.net .net vb.net webforms

我使用jQuery在JavaScript pageLoad()上动态切换.NET TextBox上的readonly属性,并通过事件动态切换。

我可以看到此属性已正确添加到文本框HTML中,例如:

<input type="text" value="0" id="txtSalesYear1" 
    onkeypress="return IsNumberKey(event, true);" data-control-id="sales-textbox" 
    data-relative-year="1" data-region-id="1" data-subregion-id="2" 
    data-year="2014" readonly>

但是,当我检查服务器端回发时,readonly属性为null:

txtSalesYear1.Attributes.Item("readonly")  ' = Nothing

当我遍历Attributes集合时,我会看到所有其他自定义属性及其正确的值。我怎样才能获得这个只读属性?

1 个答案:

答案 0 :(得分:0)

readonly属性可以是“readonly =”readonly“或”“(空字符串)或空”。尝试将属性设置为readonly =“readonly”,然后查看postback属性。

假设您提供.NET文本框的输出(因为它被标记为webform)而不是标准HTML文本框,您可以添加如下标记:

<asp:TextBox ID="TextBox1" runat="server" ReadOnly="true"></asp:TextBox>

渲染的源代码如下:

 <input name="TextBox1" type="text" readonly="readonly" id="TextBox1" />

然后是服务器端

C#

var isReadonly = ((TextBox)TextBox1).ReadOnly;

VB.NET

Dim isReadonly = DirectCast(TextBox1, TextBox).[ReadOnly]

控件的只读属性有你的价值。