根据 属性 后面的代码将带有 runat="server" 的输入设置为禁用
Set input with runat="server" to disabled based on code behind property
我正在尝试禁用具有 runat="server"
属性的 input
。这应该基于 属性 后面的代码。这是我在新的 .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
?
所以,这里有几点需要注意:
<%#
将仅在数据绑定上下文中工作,所以不是你的情况
<%=
等同于 Response.Write
,所以同样不是你的情况,因为它不能操纵服务器端控件属性
- 在调用
Load
之前处理标记,因此您的初始化可能会晚到您想要的。
最好的办法就是在代码隐藏中禁用此功能 - 这是设置非数据绑定控件属性的唯一好方法。你可以直接在setter里做,像这样:
private bool _isReadOnly;
public bool IsReadOnly
{
get { return _isReadOnly; }
set
{
myinput.Disabled = value;
_isReadOnly = value;
}
}
而且您可能不需要 getter,因此毕竟不需要私有字段。
我正在尝试禁用具有 runat="server"
属性的 input
。这应该基于 属性 后面的代码。这是我在新的 .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
?
所以,这里有几点需要注意:
<%#
将仅在数据绑定上下文中工作,所以不是你的情况<%=
等同于Response.Write
,所以同样不是你的情况,因为它不能操纵服务器端控件属性- 在调用
Load
之前处理标记,因此您的初始化可能会晚到您想要的。
最好的办法就是在代码隐藏中禁用此功能 - 这是设置非数据绑定控件属性的唯一好方法。你可以直接在setter里做,像这样:
private bool _isReadOnly;
public bool IsReadOnly
{
get { return _isReadOnly; }
set
{
myinput.Disabled = value;
_isReadOnly = value;
}
}
而且您可能不需要 getter,因此毕竟不需要私有字段。