我应该如何使用其参数调用`EditorForModel`?

时间:2013-02-26 15:31:21

标签: c# asp.net-mvc-3

在发布此问题之前,我使用参数搜索了EditorForModel

我看了Why not use Html.EditorForModel()blog

我没有找到任何与我的需求有关的文章。

您能举例说明使用参数调用EditorForModel吗?

1 个答案:

答案 0 :(得分:29)

这个助手有6 overloads

  1. @Html.EditorForModel()

    呈现~/Views/Shared/EditorTemplates/TypeName.cshtml模板,其中TypeName是视图模型的确切类型名称。如果您的视图模型是一个集合(即IEnumerable<TypeName>IList<TypeName>TypeName[],...),ASP.NET MVC将自动为集合的每个元素呈现相应的编辑器模板。您不需要在视图中编写任何循环来实现这一点。它由框架为您处理。

  2. @Html.EditorForModel("templatename")

    呈现~/Views/Shared/EditorTemplates/templatename.cshtml而不是依赖惯例

  3. @Html.EditorForModel(new { Foo = "bar" })

    呈现默认编辑器模板,但将其他视图数据传递给您,可以使用ViewData["foo"]ViewBag.Foo

  4. 将其用于内部
  5. @Html.EditorForModel("templatename", new { Foo = "bar" })

    呈现~/Views/Shared/EditorTemplates/templatename.cshtml而非依赖惯例,并将其他视图数据传递给您,您可以使用ViewData["foo"]ViewBag.Foo

  6. 将其用于内部
  7. @Html.EditorForModel("templatename", "fieldprefix")

    呈现~/Views/Shared/EditorTemplates/templatename.cshtml而不是依赖约定并修改此模板中的导航上下文,这意味着,例如,如果您在此模板中进行@Html.TextBoxFor(x => x.FooBar)调用,则会获得name="fieldprefix.FooBar" name="FooBar"

  8. @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

  9. 备注:模板系统将首先在~/Views/XXX/EditorTemplates中查找模板,其中XXX是为此视图提供服务的控制器的名称,如果找不到,则会查看~/Views/Shared/EditorTemplates。这可以允许更细粒度的模板调整。您可以在共享文件夹中拥有可以按控制器覆盖的默认模板。