在 ASP.Net 中,如果更改只读值,它将在回发时恢复为原始值。
但是,您可以使用 wrokaround,而不是以readonly
声明方式指定,而是将其分配为代码隐藏中的属性。IE
代替
<asp:textbox runat="server" id="checkIn" ReadOnly="true"...
应用这是代码隐藏
checkIn.Attributes.Add("readonly", "readonly");
但是,视图状态仍然可能不适用于此。
更多信息:
readonly
HTML 中的和disabled
控件之间存在细微差别。那些disabled
不会与表格一起提交,但是readonly
那些会。从字面上看,readonly
只是readonly,但disabled
实际上是disabled。
来自 W3C:http ://www.w3.org/TR/html401/interact/forms.html#h-17.12
(下到 17.13.2 17.13 表单提交下的成功控制部分)
然而,如果一个控件是这样声明的,即如果在初始化期间设置了属性,则 ASP.Net 在回发时恢复为原始值。这就是为什么稍后设置属性(在页面加载中)不会影响此行为的原因。