C# 将输入设置为runat=";服务器";基于代码隐藏属性禁用的步骤

C# 将输入设置为runat=";服务器";基于代码隐藏属性禁用的步骤,c#,asp.net,webforms,C#,Asp.net,Webforms,我正在尝试使用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 I

我正在尝试使用
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; }
}

输入未呈现为禁用

我做错了什么?我尝试了各种各样的方法,但都没有效果,包括:

  • disabled=”“
    :即使
    IsReadOnly=true,也不禁用
  • disabled=''
    :当
    IsReadOnly=false时不工作
  • 标记内:解析器错误

如何基于code behind属性禁用aspx中的
输入?

因此,这里需要注意以下几点:


  • 为什么不在
    页面加载处理程序中执行
    myinput.Disabled=IsReadOnly
    ?请注意,您不能使用
    ,这是我当前使用的解决方法。然而,因为aspx已经有很多其他类似的部件,我想把它们都保留在那里(或者,当我在几个月后回到这个视图时,我可能不知道输入是如何被禁用的)。如果我在数据绑定上下文中使用模型上的
    IsReadOnly
    ,并且在
    @Jeroen中,如果您在数据绑定上下文中,例如在网格视图中,您的输入控件将位于某种模板中,并且在代码中不可用,而只是它们的ID。在这种情况下,
    Disabled=
    是正确的选择
    private bool _isReadOnly;
    public bool IsReadOnly
    {
        get { return _isReadOnly; }
        set
        {
            myinput.Disabled = value;
            _isReadOnly = value;
        }
    }