在发布这个问题之前,我搜索了EditorForModel
使用参数。
我读了为什么不使用 Html.EditorForModel()和这个博客。
我没有找到任何与我的需求相关的文章。
你能给我一个EditorForModel
带参数调用的例子吗?
在发布这个问题之前,我搜索了EditorForModel
使用参数。
我读了为什么不使用 Html.EditorForModel()和这个博客。
我没有找到任何与我的需求相关的文章。
你能给我一个EditorForModel
带参数调用的例子吗?
这个助手有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
. 这可以允许对模板进行更细粒度的调整。您可以在共享文件夹中有默认模板,每个控制器可以覆盖这些模板。