我正在尝试访问我正在处理的自定义HtmlHelper的ModelMetaData。HtmlHelper有一个这样的签名...
public static MvcHtmlString DataGrid<T>(this HtmlHelper<T> htmlHelper){}(剃刀)视图看起来像这样...
@model IEnumerable<LogMyAssets.Models.ContactModel>
....
@Html.DataGrid()我的问题是我无法访问模型的ModelMetaData,因为它是IEnumerable。我认为我可以做到以下几点:
var model = (IEnumerable<T>)htmlHelper.ViewData.Model;
var metaData = model.ElementAt(0).GetMetadata();
public static ModelMetadata GetMetadata<TModel>(this TModel model)
{
return ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel));
}但奇怪的是,我得到了以下错误:
Unable to cast object of type 'System.Collections.Generic.List`1[LMA.Models.ContactModel]'
to type 'System.Collections.Generic.IEnumerable`1[System.Collections.Generic.IEnumerable`1我认为我可以将泛型列表转换为泛型IEnumerable。我是不是遗漏了什么?
发布于 2011-05-10 20:38:45
我真的不明白T在(IEnumerable<T>)中是在哪里定义的,但是我猜T已经是IEnumerable<something>了,这意味着您正试图转换为IEnumerable<IEnumerable<something>>
https://stackoverflow.com/questions/5198674
复制相似问题