MVC 3 - 访问 IEnumerable 模型的 ModelMetaData?
我正在尝试访问我正在处理的自定义 HtmlHelper 的 ModelMetaData。 HtmlHelper 有一个像这样的签名...
public static MvcHtmlString DataGrid<T>(this HtmlHelper<T> htmlHelper){}
(Razor)视图看起来像这样...
@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。我错过了什么吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不太明白
T
是在(IEnumerable)
中定义的,但是我的猜测是T
已经是IEnumerable
,这意味着您正在尝试转换为IEnumerable>
I don't really understand where the
T
is defined in(IEnumerable<T>)
, however my Guess is thatT
is alreadyIEnumerable<something>
, which means you're trying to cast toIEnumerable<IEnumerable<something>>