启用&在剃刀视图中禁用文本框(ASP.Net MVC 3)

时间:2011-07-06 12:52:50

标签: asp.net-mvc asp.net-mvc-3 html5

我想根据值(Model.CompanyNameEnabled)启用或禁用文本框。

以下代码无效。请纠正。

@{
    string displayMode = (Model.CompanyNameEnabled) ? "" : "disabled = disabled";
    @Html.TextBox("CompanyName", "", new { displayMode })
}

4 个答案:

答案 0 :(得分:34)

@{
   object displayMode = (Model.CompanyNameEnabled) ? null : new {disabled = "disabled" };
   @Html.TextBox("CompanyName", "", displayMode)
}

您应该将htmlAttribute作为匿名对象传递,其属性名称为= html属性名称,属性值=属性值。你的错误是你传递的是字符串而不是名字=值对

答案 1 :(得分:7)

<input id="textbox1" type="text" @{@((Model.CompanyNameEnabled) ? null : new { disabled = "disabled" })}; />

Haven没有对它进行测试,但是应该可以使用

答案 2 :(得分:2)

一种简单的方法:

@Html.TextBoxFor(x => x.Phone, new { disabled = "disabled", @class = "form-control" })

答案 3 :(得分:1)

正如本主题中已经提到的,建议的答案不再适用于MVC5。对于这个问题,实际上是一个简单的两步解决方案。

  1. 为要禁用/启用的HTML输入分配一个类(当然,id将对单个项目执行)。在下面的示例中,我为输入分配了一个 &#39; switch-disabled&#39;
  2. @Html.TextBox("CompanyName", "", new { htmlAttributes = new { @class = "form-control switch-disable" } })
    
    1. 使用javascript(jquery)启用/禁用HTML中的禁用参数。在下面的示例中,我在页面加载时执行此操作。
    2. <script>
      $(document).ready(() => {
          if(@Model.CompanyNameEnabled)
          {
              $('.switch-disable').attr("disabled", false);
          }else{
              $('.switch-disable').attr("disabled", true);
          }
      });
      </script>