2014-12-01 112 views
0

我正在使用jQuery切换.NET文本框上的readonly属性,这两个属性都是在JavaScript pageLoad()和动态事件中进行的。在服务器端获取客户端只读属性?

我可以看到这个属性是正确添加到文本框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属性为空:

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

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

+2

浏览器不会通过表单提交发送此类数据。它仅在窗体内发送input \ textarea控件的值。它不会发送除 – 2014-12-01 20:29:12

+0

之外的任何属性像上面的注释一样,readonly属性不会发送到服务器。您必须将更改存储在其他地方,例如隐藏字段。 – 2014-12-01 20:51:23

回答

0

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

假设你提供.NET文本框的输出(因为这被标记为Web窗体),而不是一个标准的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] 

而且还有你的控件的只读属性值。