为什么不使用Html.EditorForModel()
好吧,我刚刚发现了MVC中的EditorForModel
,我想知道何时应该在每个属性上使用它而不是EditorFor
? 为什么当我添加强类型视图时它不使用它并在每个属性上构建一个EditorFor
?
我迟到了…但感谢您的信息!
由于接受的答案是一个仅链接的答案(并被删除),我想我实际上回答了从Brad Wilson的博客中获得的问题: ASP.NET MVC 2模板,第1部分:简介 。
模型表达式是在当前模型上运行的简单助手。 DisplayForModel()行等同于DisplayFor(model => model)。
TL; DR可以为EditorFor(model => model)
和EditorForModel()
假设相同的想法; 这些辅助方法实现了同样的目的。 EditorForModel()
假设模型表达式是传递给视图的@model
。
以下面的模型和视图为例:
public class Person { public string Name {get; set;} public Address MailingAddress {get; set;} } public class Address { public String Street {get; set;} public String City {get; set;} public String State {get; set;} }
Create.cshtml
:
@model MyNamespace.Models.Person /* So, you need an Editor for the Person model? */ @Html.EditorForModel() /*the above is equivalent to @Html.EditorFor(model => model) */ /* you need to specify the Address property that the editor accepts? */ @Html.EditorFor(model => model.MailingAddress)
您应该尽可能使用它,但有时您需要单独使用Html.EditorFor
的可自定义性。
至于为什么内置模板不使用它,这主要是因为它们通常是愚蠢的,但也因为,如果我记得,他们需要在每个Html.EditorFor
周围包装元素(如表行等)。
@ Html.EditorForModel()?? 并放弃编写自己的观点的乐趣? 微笑
除了乐趣之外,这样做的习惯是相当冒险的。 请考虑以下常见情况 – 您的客户表中的数据库中有一个bool变量,表示IsMale。 显然你不想要默认版本(带复选框的IsMale) – 你可能想要一些更友好的东西,比如{select,Options ….,/ select}标签,对吗? 这就是视图真正开始的地方。这就是定制。 每个视图都有一点不同。 你有RAZOR引擎,最大限度地利用它! 在您的视图中,您可以覆盖任何内容,甚至可以手动键入您自己的整个HTML代码块。
我从未使用过EditorFor,也没想到将来会使用它。 EditorFor假设它知道你想要什么。 你知道当你做某事时会发生什么。
也许如果你正在做一个快速的Mvc尖峰测试其他东西你可能会使用EditorFor。
- 在asp.net mvc 3中登录的unit testing
- 在Razor视图中有条件地更改CSS类
- 还有一个无法加载文件或程序集’EntityFramework
- 我应该如何使用其参数调用`EditorForModel`?
- 在MVC(httpmodule)中将英文数字更改为波斯语,反之亦然?
- (OAuthException – #2500)必须使用活动访问令牌来查询有关当前用户的信息
- 具有entity framework和编辑多个对象的MVC 3导致“参照完整性约束违反”
- 如何使用method =“post”从表单中获取数据? 如何在我的控制器中请求数据?
- 带有MVC3和EF4 CTP5w的JSON序列化的循环引用exception