aspnet razor editorfor有条件地添加属性

时间:2015-11-04 05:35:37

标签: asp.net-mvc razor editorfor

我使用以下方法创建表单控件:

@Html.DropDownList("FK_CompID", null, htmlAttributes: new { @class = "form-control", @readonly = "readonly"})

但是当我需要有条件地进行它是否只读时我将删除该属性,

有没有办法像这样处理它:

@Html.DropDownList("FK_CompID", null, htmlAttributes: new { @class = "form-control", @readonly = null})

并且不应该添加到元素?

2 个答案:

答案 0 :(得分:0)

您需要根据某些属性构建一个定义html属性的对象,然后在DropDownList()方法中使用它。假设您的模型包含属性bool IsReadOnly,那么

@{
    var attributes = Model.IsReadOnly ? 
    (object)new { @class = "form-control", readonly = "readonly" } :
    (object)new { @class = "form-control"};
}
@Html.DropDownList("FK_CompID", null, attributes)

答案 1 :(得分:0)

我使用@ Html.EditorFor()和htmlAttributes来完成这项工作。

您可以将HTML属性设置如下

@Html.EditorFor(modelItem => Model.item, new { name ="name", htmlAttributes = new { @readonly = "readonly" } })

这对我来说设置了一个可排序的表来使编辑器字段只读。