如何使@Html.EditorFor禁用

时间:2013-10-31 10:17:50

标签: asp.net-mvc html-helper

我在asp.net mvc web应用程序中有以下内容: -

<div><span class="f">Data Center Name</span> @Html.EditorFor(model => model.Switch.TMSRack.DataCenter.Name, new  { disabled = "disabled" })</div>

但该字段不会被禁用,任何人都可以请求吗? 感谢

6 个答案:

答案 0 :(得分:57)

@Html.EditorFor()没有重载来支持htmlAttributes。您可以尝试@Html.TextBoxFor()

@Html.TextBoxFor(model => model.propertyName, new {disabled= "disabled" })

如果您在htmlAttributes中使用class等系统关键字,请在属性名称前添加@

例如:

@Html.TextBoxFor(model => model.propertyName, new {@class = "disabledClass" })

答案 1 :(得分:24)

使用MVC 5,@Html.EditorFor()支持htmlAttributes

@Html.EditorFor(model => model.x, new { htmlAttributes = new { @class = "form-control", @disabled = "disabled" } })

上面的示例显示了如何添加类以及禁用的属性

答案 2 :(得分:8)

另一种选择:用div或具有特定id的span来包围EditorFor,然后使用一些jquery / js:

  <span id="editors">      
        @Html.EditorFor(x => x.ViewModelProperty)
  </span>

    <!-- Disable above editors. EditorFor doesn't allow html attributes unfortunately. -->
    <script type="text/javascript">
        $(function () { $('#editors :input').attr("disabled", true); });
    </script>

答案 3 :(得分:1)

如果您在接受编辑更改时丢失信息... 你可以试试

{{1}}

答案 4 :(得分:1)

您还可以使用EditorFor() 例如: - @Html.EditorFor(model => model.Nama, new { htmlAttributes = new { @class = "form-control", @disabled ="true" } })

答案 5 :(得分:0)

对于那些丢失文本值的用户:禁用字段不会将其值传递给控制器​​。而是使用@readonly = "readonly"

@Html.EditorFor(model => model.EmployeeCode, new { htmlAttributes = new { @readonly = "readonly", @class = "form-control"} })