MVC 3 - Доступ к ModelMetaData для IEnumerable модели? - PullRequest
3 голосов
/ 04 марта 2011

Я пытаюсь получить доступ к ModelMetaData для пользовательского HtmlHelper, над которым я работаю.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.Я что-то упустил?

1 Ответ

0 голосов
/ 10 мая 2011

Я действительно не понимаю, где T определен в (IEnumerable<T>), однако я думаю, что T уже IEnumerable<something>, что означает, что вы пытаетесь привести к IEnumerable<IEnumerable<something>>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...