【问题标题】:.NET MVC Render Views with custom data annotations.NET MVC 呈现带有自定义数据注释的视图
【发布时间】:2012-03-05 15:30:55
【问题描述】:

玩了一下 .NET MVC Web 应用程序,并对 ViewModel 和数据注释有疑问。

假设我有一个 ViewModel:

public class MyViewModel
{
    [DisplayName("First Name")]
    public string FirstInfoName { get; set; }

    [DisplayName("First Information")]
    public string FirstInfo { get; set; }

    [DisplayName("Second Name")]
    public string SecondInfoName { get; set; }

    [DisplayName("Second Information")]
    public string SecondInfo { get; set; }

    [DisplayName("Third Name")]
    public string ThirdInfoName { get; set; }

    [DisplayName("Third Information")]
    public string ThirdInfo { get; set; }
}

当我想创建我使用的 ViewModel 的编辑视图时:

@Html.EditorForModel()

这很好用,MVC 将为我呈现文本框。但是假设我想在视图中呈现选项卡,因此 ViewModel 的属性将根据数据注释进行分组。 示例:

public class MyViewModel
{
    [Tab(1)]
    [DisplayName("First Name")]
    public string FirstInfoName { get; set; }

    [Tab(1)]
    [DisplayName("First Information")]
    public string FirstInfo { get; set; }

    [Tab(2)]
    [DisplayName("Second Name")]
    public string SecondInfoName { get; set; }

    [Tab(2)]
    [DisplayName("Second Information")]
    public string SecondInfo { get; set; }

    [Tab(3)]
    [DisplayName("Third Name")]
    public string ThirdInfoName { get; set; }

    [Tab(3)]
    [DisplayName("Third Information")]
    public string ThirdInfo { get; set; }
}

有可能做这样的事情吗?也许使用模板?

【问题讨论】:

    标签: asp.net-mvc data-annotations


    【解决方案1】:

    虽然我不会说你不能这样做,但这肯定不是一个简单的解决方案。原因是属性是基于每个属性进行评估的。标签通常与组一起显示,并且没有一种好方法可以更改您的 html 以包含基于同一类型的多个属性的组。

    【讨论】:

    • 所以我想解决方案是为每个编辑页面创建单独的视图。我想要的是为我的所有编辑页面提供一个通用的编辑视图。
    • 好吧,你可以做的是将属性分组到它自己的类型中,然后为该类型创建一个 EditorTemplate。
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多