3

私が取り組んでいるカスタム HtmlHelper の ModelMetaData にアクセスしようとしています。HtmlHelper には次のような署名があります...

public static MvcHtmlString DataGrid<T>(this HtmlHelper<T> htmlHelper){}

(Razor)ビューは次のようになります...

@model IEnumerable<LogMyAssets.Models.ContactModel>
....
@Html.DataGrid()

私の問題は、IEnumerable であるため、モデルの ModelMetaData にアクセスできないことです。私は次のことができると思いました:

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

Generic List から Generic IEnumerable にキャストできると思いました。何か不足していますか?

4

1 に答える 1