【问题标题】:MVC 3 - Accessing ModelMetaData for IEnumerable Model?MVC 3 - 访问 IEnumerable 模型的 ModelMetaData?
【发布时间】:2011-03-04 20:05:54
【问题描述】:

我正在尝试访问我正在处理的自定义 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。我错过了什么吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 html-helper modelmetadata


    【解决方案1】:

    我不太明白T(IEnumerable&lt;T&gt;) 中的定义位置,但我猜T 已经是IEnumerable&lt;something&gt;,这意味着您正在尝试转换为IEnumerable&lt;IEnumerable&lt;something&gt;&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 2012-05-27
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多