我想为ASP.NET MVC中的不同数据types(与Html.EditorFor() )一起使用自定义编辑器模板,包括重写现有的模板。 最终目标是创build一个迷你框架,其中每个编辑器都支持有关被更改的javascript通知,并且可以向用户显示一条消息,指出页面中存在未保存的更改。 (也许有一些已经存在的东西?) 我可以find许多有关此类模板问题的问题,但无法find有关创build它们的教程或手册。 他们去哪里? 有什么特别的语法吗? 如何select模板? 模板中提供哪些信息以及如何访问? 等等。 那么 – 我在哪里可以find关于这些模板的所有信息?
所以,标题应该说明一切。 为了在ASP.NET MVC中创build可重用的组件,我们有3个选项(可能是其他我没有提到的): 部分视图: @Html.Partial(Model.Foo, "SomePartial") 定制编辑器模板: @Html.EditorFor(model => model.Foo) 自定义显示模板: @Html.DisplayFor(model => model.Foo) 根据实际的View / HTML,这三个实现是相同的: @model WebApplications.Models.FooObject <!– Bunch of HTML –> 所以,我的问题是 – 什么时候/如何决定使用哪一个? 我真正想要的是在创build一个问题之前问自己的问题列表,可以使用这些答案来决定使用哪个模板。 以下是我用EditorFor / DisplayForfind的两件事情: 它们在呈现HTML帮助器时尊重模型层次结构(例如,如果在“Foo”模型中有“Bar”对象,则“Bar”的HTML元素将以“Foo.Bar.ElementName”呈现,而部分将具有“的ElementName“)。 更健壮的,例如,如果您的ViewModel中有一个List<T> ,您可以使用@Html.DisplayFor(model => model.CollectionOfFoo) ,而且MVC足够聪明,可以看到它是一个集合并呈现出单个显示为每个项目(而不是一个部分,这将需要一个明确的循环)。 我也听说DisplayFor呈现“只读”模板,但我不明白 – 我不能在那里扔表吗? 有人能告诉我其他一些原因吗? 比较三个地方是否有列表/文章?