14

WebGrid ヘルパーを使用して MVC 3 ビューに表示しようとしている Car クラスがあります。以下は 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 の列ヘッダー テキスト ( ????? )として使用する方法を理解したいと思います。これがどのように達成されるか知っている人はいますか?

前もって感謝します!

4

2 に答える 2

11

地獄のように醜いですが、うまくいく可能性があります:

grid.Column(
    "CarName", 
    ModelMetadata.FromLambdaExpression(
        car => car.CarName, 
        new ViewDataDictionary<Car>(new Car())
    ).DisplayName
)

問題は、WebGrid ヘルパーが完全に動的データに基づいており、強力な型付けがまったくないことです。これが、私が嫌いな理由の 1 つです。Microsoft の WebMatrix チームは、C# 4.0 の動的機能の真のファンであるに違いありません。API 全体が弱く型付けされたオブジェクトしか使用しないからです :-)

MvcContrib Gridははるかに優れています。

于 2011-03-09T19:04:56.323 に答える