我正在尝试停用input
runat="server"
属性。这应该基于属性背后的代码。这是我在新的.NET 3.5 Web窗体项目中对场景的最小重复:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.IsReadOnly = true;
}
public bool IsReadOnly { get; set; }
}
<%= IsReadOnly %>
<input value="testing" runat="server" id="myinput" disabled="<%# IsReadOnly %>"/>
输入不呈现为已禁用。
我做错了什么?我尝试了各种各样的事情,包括:
disabled="<%= IsReadOnly %>"
:即使IsReadOnly = true
disabled='<%= IsReadOnly ? "disabled" : "" %>'
:IsReadOnly = false
<%= IsReadOnly ? "disabled='disabled'" : "" %>
:解析器错误如何根据代码隐藏属性禁用aspx中的input
?
答案 0 :(得分:2)
所以,请注意以下几点:
<%#
仅适用于数据绑定上下文,所以不是你的情况<%=
相当于Response.Write
,所以再次不是你的情况,因为它无法操纵服务器端控件属性Load
之前处理标记,因此您的初始化可能会迟到。你最好的办法就是在代码背后禁用 - 这是设置非数据绑定控件属性的唯一好方法。您可以直接在设置器中执行此操作:
private bool _isReadOnly;
public bool IsReadOnly
{
get { return _isReadOnly; }
set
{
myinput.Disabled = value;
_isReadOnly = value;
}
}
毕竟,你可能不需要吸气剂和私人领域。