【问题标题】:Using HTML.EditorFor Vs using HTML.CheckBox使用 HTML.EditorFor 与使用 HTML.CheckBox
【发布时间】:2014-07-01 17:40:54
【问题描述】:

我有以下模型类,其中包含一个布尔值:-

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

【问题讨论】:

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

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


【解决方案1】:

基本上你有 3 种可能性:

手动编写 HTML(就像你所做的那样)

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

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

特定的 HTML 帮助器为所有控件添加了抽象层。 修改使用相同 HTML 帮助器的所有控件的模板很容易,它使您的视图更具可读性。

使用通用编辑器

如果您的模型数据类型经常更改,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 帮助程序,因为数据类型不太可能发生变化,并且会使视图更清晰

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多