我有以下包含bool值的模型类: -
Public class Server
{
public bool IsIPUnique { get; set; }
}
目前我正在使用以下内容显示Razor视图中的复选框: -
<input type="CheckBox" name="IsIPUnique" value="true" @(Html.Raw(Model.IsIPUnique ? "checked=\"checked\"" : ""))/> IP Unique.
但是我读到了关于EditorFor模板,它可以自动创建复选框并根据模型值检查/取消选中它,所以我尝试了以下方法: -
@Html.EditorFor(model=>model.IsIPUnique)<span>test</span>
所以我的问题是,我是否可以用使用EditorFor的新代码替换我的旧代码?或者asp.net mvc可能会以不同的方式处理这些值? 感谢
答案 0 :(得分:3)
基本上你有3种可能性:
手动编写HTML(正如您所做)
如果有可用的HTML助手,我会避免手动编写HTML。 手动编写的HTML容易出错,这可能会导致模型绑定出现问题。
使用特定的HTML帮助程序(Html.CheckBoxFor)
特定的HTML帮助程序为所有控件添加了一个抽象层。 修改使用相同HTML帮助程序的所有控件的模板很容易,它使您的视图更具可读性。
使用常规EditorFor
如果您的模型数据类型经常更改,则EditorFor HTML帮助程序非常有用。 EditorFor会自动将输入字段调整为新的数据类型,并且不会抛出错误(与特定的HTML帮助程序一样)。 将HTML属性添加到EditorFor也有点困难,而特定的HTML帮助程序通常会有重载。 但是,这已在MVC 5.1中修复:http://weblogs.asp.net/jongalloway/looking-at-asp-net-mvc-5-1-and-web-api-2-1-part-3-bootstrap-and-javascript-enhancements
结论:在您的情况下,我会使用CheckBoxFor HTML帮助程序,因为数据类型不会发生变化,它会使视图更清晰