我应该如何使用其参数调用`EditorForModel`?
在发布这个问题之前,我使用参数搜索了EditorForModel
。
我读了为什么不使用Html.EditorForModel()和这个博客 。
我没有找到任何与我的需求有关的文章。
你能给我一个带参数的EditorForModel
调用的例子吗?
这个助手有6个重载 :
-
@Html.EditorForModel()
呈现
~/Views/Shared/EditorTemplates/TypeName.cshtml
模板,其中TypeName
是视图模型的确切类型名称。 如果您的视图模型是一个集合(即IEnumerable
,IList
,TypeName[]
,…),ASP.NET MVC将自动为集合的每个元素呈现相应的编辑器模板。 您不需要在视图中编写任何循环来实现这一点。 它由框架为您处理。 -
@Html.EditorForModel("templatename")
渲染
~/Views/Shared/EditorTemplates/templatename.cshtml
而不是依赖于约定 -
@Html.EditorForModel(new { Foo = "bar" })
呈现默认编辑器模板,但将其他视图数据传递给它,您可以在其中使用
ViewData["foo"]
或ViewBag.Foo
-
@Html.EditorForModel("templatename", new { Foo = "bar" })
呈现
~/Views/Shared/EditorTemplates/templatename.cshtml
而不是依赖于约定并将其他视图数据传递给它,您可以在其中使用ViewData["foo"]
或ViewBag.Foo
-
@Html.EditorForModel("templatename", "fieldprefix")
渲染
~/Views/Shared/EditorTemplates/templatename.cshtml
而不是依赖约定并修改此模板中的导航上下文,这意味着例如,如果您在此内部调用了@Html.TextBoxFor(x => x.FooBar)
模板你会得到name="fieldprefix.FooBar"
而不是name="FooBar"
-
@Html.EditorForModel("templatename", "fieldprefix", new { Foo = "bar" })
渲染
~/Views/Shared/EditorTemplates/templatename.cshtml
而不是依赖约定并修改此模板中的导航上下文,这意味着例如,如果您在此内部调用了@Html.TextBoxFor(x => x.FooBar)
模板你会得到name="fieldprefix.FooBar"
而不是name="FooBar"
。 它还传递了一个额外的视图数据,您可以在其中使用ViewData["foo"]
或ViewBag.Foo
备注:模板系统将首先在~/Views/XXX/EditorTemplates
中查找模板,其中XXX是服务于此视图的控制器的名称,如果找不到,则会查看~/Views/Shared/EditorTemplates
。 这可以允许对模板进行更细粒度的调整。 您可以在共享文件夹中拥有可以基于每个控制器覆盖的默认模板。