使用HTML.EditorFor Vs使用HTML.CheckBox

时间:2014-06-30 17:00:16

标签: asp.net-mvc asp.net-mvc-5 editorfor

我有以下包含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可能会以不同的方式处理这些值? 感谢

1 个答案:

答案 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帮助程序,因为数据类型不会发生变化,它会使视图更清晰

相关问题