我在asp.net mvc web应用程序中有以下内容: -
<div><span class="f">Data Center Name</span> @Html.EditorFor(model => model.Switch.TMSRack.DataCenter.Name, new { disabled = "disabled" })</div>
但该字段不会被禁用,任何人都可以请求吗? 感谢
答案 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"} })