Asp.net mvc 使用HTML.EditorFor Vs使用HTML.CheckBox

Asp.net mvc 使用HTML.EditorFor Vs使用HTML.CheckBox,asp.net-mvc,asp.net-mvc-5,editorfor,Asp.net Mvc,Asp.net Mvc 5,Editorfor,我有以下包含布尔值的模型类:- Public class Server { public bool IsIPUnique { get; set; } } 目前,我正在使用以下选项在Razor视图中显示复选框:- <input type="CheckBox" name="IsIPUnique" value="true" @(Html.Raw(Model.IsIPUnique ? "checked=\"checked\"" : ""))/> IP Unique. IP

我有以下包含布尔值的模型类:-

Public class Server
{
        public bool IsIPUnique { get; set; }
}
目前,我正在使用以下选项在Razor视图中显示复选框:-

<input type="CheckBox" name="IsIPUnique" value="true" @(Html.Raw(Model.IsIPUnique ? "checked=\"checked\"" : ""))/> IP Unique.
IP唯一。
但是我读过关于EditorFor模板的内容,它可以自动创建复选框,并根据模型值选中/取消选中它,因此我尝试了以下方法:-

@Html.EditorFor(model=>model.IsIPUnique)<span>test</span>
@Html.EditorFor(model=>model.IsIPUnique)测试
所以我的问题是,我是否可以用使用EditorFor?的新代码替换我的旧代码,或者asp.net mvc可能会以不同的方式处理这些值?
谢谢

基本上你有三种可能:

手动编写HTML(如您所做)

如果有HTML助手可用,我将避免手动编写HTML。 手动编写的HTML容易出错,这可能会导致模型绑定出现问题

使用特定的HTML帮助程序(HTML.CheckBoxFor)

特定的HTML帮助程序为所有控件添加了一层抽象。 修改使用同一HTML帮助程序的所有控件的模板很容易,并且可以使视图更具可读性

使用通用编辑器for

如果您的模型数据类型经常更改,那么EditorForHTML帮助器非常有用。 EditorFor将自动将输入字段调整为新的数据类型,并且不会抛出错误(与特定的HTML帮助程序一样)。 将HTML属性添加到EditorFor也有点困难,而特定的HTML帮助程序通常具有重载。 但是,MVC 5.1中固定了这一点:


结论:在您的情况下,我会使用CheckBoxFor HTML helper,因为数据类型不太可能改变,它会使视图更清晰

那么,当您尝试新代码时发生了什么?基本上它会生成相同的HTML标记,但是我不确定是否使用EditorFor而不是复选框?您是否考虑过使用Html。CheckBoxFor?当您不关心mvc为您的模型生成什么类型的输入(意味着没有编辑器模板)或者当您希望对模型(或模型的一部分)的生成方式进行特定控制时,EditorFor非常好。不过,在大多数情况下,像CheckBoxFor这样的html助手方法可以帮你解决这个问题。此外,在使用表单时要记住的主要一点是,你必须为正确的模型绑定和验证等设置name属性。当您使用html帮助器方法时,MVC会为您解决这个问题。