在发布这个问题之前,我用谷歌搜索了EditorForModel参数.
我读过为什么不使用Html.EditorForModel()和这个博客.
我没有找到任何与我的需求有关的文章.
你能给我一个EditorForModel带参数调用的例子吗?
Dar*_*rov 29
这个助手有6个重载:
@Html.EditorForModel()
将~/Views/Shared/EditorTemplates/TypeName.cshtml模板渲染到TypeName视图模型的确切类型名称.如果您的视图模型是一个集合(即IEnumerable<TypeName>,IList<TypeName>,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.这可以允许更细粒度的模板调整.您可以在共享文件夹中具有可以基于每个控制器覆盖的默认模板.