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

前端之家收集整理的这篇文章主要介绍了asp.net – 如何在WebGrid中的列标题使用DisplayName数据注释?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Car类,我试图使用WebGrid帮助器在MVC 3视图中显示.下面是Car和它的元数据类.

汽车类:

  1. [MetadataType(typeof(CarMetadata))]
  2. public partial class Car
  3. {
  4. // car implementation
  5. }

汽车元数据类:

  1. public class CarMetadata
  2. {
  3. [DisplayName("Car Name")]
  4. [StringLength(100,ErrorMessageResourceType = typeof(ValidationText),ErrorMessageResourceName="CarNameDescriptionLength")]
  5. [required]
  6. public string CarName { get; set; }
  7. }

查看内容

  1. @model List<Car>
  2. ...
  3. var grid = new WebGrid(Model,canPage: true,rowsPerPage: 10);
  4. grid.Pager(WebGridPagerModes.NextPrevIoUs);
  5.  
  6. @grid.GetHtml(
  7. htmlAttributes: new { id = "grid" },columns: grid.Columns(
  8. grid.Column("CarName",?????)
  9. ));

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

提前致谢!

解决方法

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

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

MvcContrib Grid好多了

猜你在找的asp.Net相关文章