加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何在WebGrid中的列标题使用DisplayName数据注释?

发布时间:2020-12-15 22:47:33 所属栏目:asp.Net 来源:网络整理
导读:我有一个Car类,我试图使用WebGrid帮助器在MVC 3视图中显示.下面是Car和它的元数据类. 汽车类: [MetadataType(typeof(CarMetadata))]public partial class Car{ // car implementation} 汽车元数据类: public class CarMetadata{ [DisplayName("Car Name")]
我有一个Car类,我试图使用WebGrid帮助器在MVC 3视图中显示.下面是Car和它的元数据类.

汽车类:

[MetadataType(typeof(CarMetadata))]
public partial class Car
{
    // car implementation
}

汽车元数据类:

public class CarMetadata
{        
    [DisplayName("Car Name")]
    [StringLength(100,ErrorMessageResourceType = typeof(ValidationText),ErrorMessageResourceName="CarNameDescriptionLength")]
    [Required]
    public string CarName { get; set; }    
}

查看内容:

@model List<Car>
...
var grid = new WebGrid(Model,canPage: true,rowsPerPage: 10);
grid.Pager(WebGridPagerModes.NextPrevious);

@grid.GetHtml(
    htmlAttributes: new { id = "grid" },columns: grid.Columns(
        grid.Column("CarName",?????)
    ));

目标:我想知道如何使用DisplayName数据注释作为WebGrid(?????)中的列标题文本.有谁知道这是如何实现的?

提前致谢!

解决方法

丑陋的地狱,但它可以工作:
grid.Column(
    "CarName",ModelMetadata.FromLambdaExpression(
        car => car.CarName,new ViewDataDictionary<Car>(new Car())
    ).DisplayName
)

问题是,WebGrid帮助器完全基于动态数据,绝对没有强大的打字,这是我讨厌它的原因之一. Microsoft的WebMatrix团队必须是C#4.0动态功能的真正粉丝,因为他们的整个API只需要弱类型的对象:-)

MvcContrib Grid好多了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读