asp.net-mvc - Collection 模型类的 EditorTemplate 命名约定

标签 asp.net-mvc mvc-editor-templates razor-2

我有一个声明为类型 List<MyClass> 的模型属性.

public class MyModel
{
    List<MyClass> MyProperty { get; set; }
}

我希望能够使用 Razor 模板显示/编辑属性。我的问题是,我如何命名 EditorTemplate View ,以便我可以使用正常语法显示该属性:

@model MyModel
@Html.DisplayFor(m => m.MyProperty)

我知道我可以创建一个名为 MyClass.cshtml 的 View ,它将用于类型 MyClass ,但如何为列表创建模板?

最佳答案

您可以使用 [UIHint] 属性:

public class MyModel
{
    [UIHint("TemplateForTheList")]
    public List<MyClass> MyProperty { get; set; }
}

或将模板名称指定为 DisplayFor 助手的第二个参数:

@model MyModel
@Html.DisplayFor(m => m.MyProperty, "TemplateForTheList")

然后有一个 TemplateForTheList.cshtml 模板:

@model List<MyClass>
...

在这种情况下,模板引擎不会为集合属性的每个元素呈现模板。它只会将集合本身​​传递给模板。

关于asp.net-mvc - Collection 模型类的 EditorTemplate 命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941013/

相关文章:

asp.net - 当文件位于不同的服务器上而不先将其下载到我的服务器上时,使用 ASP.Net MVC 在浏览器中强制下载文件

asp.net-mvc - 构建 ASP 应用程序并将其部署到 Azure Web App 失败

asp.net-mvc - MVC EditorTemplate 具有多个输入相同的值

asp.net-mvc-3 - MVC3 IEnumerable 模型找不到正确的编辑器模板

asp.net-mvc-3 - MVC4 Razor 中可能存在重大变化,可通过 "@:@"修复

asp.net-mvc - 如何判断 MVC AsyncController 线程是否在 ASP.NET 池或 I/O 完成端口中执行

c# - 当值无效时.NET MVC 客户端验证不显示属性消息

asp.net-mvc-3 - 带有抽象类的 mvc3 razor 编辑器模板

c# - 知道 RazorEngine 中的特定模板是否已经编译

asp.net - 如何在非 MVC Razor 网页中使用 @Url.Content()?