私が取り組んでいるカスタム 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 にキャストできると思いました。何か不足していますか?