Если у меня есть ViewModel , например:
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
И строго типизированный Просмотр со строкой HTML, подобной этой:
@Html.DisplayFor(model => model.Submodel)
И шаблон отображения с такой подписью:
@model MvcApplication1.Models.SomeViewModel
Я получаю сообщение об ошибке, в котором говорится, что «элемент модели имеет тип List<SomeViewModel>
, но для этого словаря требуется модель типа SomeViewModel
.».
Это имеет смысл, но я бы надеялся, что встроенные шаблоны MVC сработают, увидят, что это что-то IEnumerable
и сработают, чтобы вызвать мой шаблон N раз, как это обычно бывает для Html.DisplayFor
без подсказки.
Похоже, [UIHint]
переопределяет эту функциональность?
Очевидно, я могу указать на другой шаблон, который принимает коллекцию и вызывает Html.DisplayForModel()
, в основном эмулируя смарт-коды MVC. Но я надеюсь избежать этого. Честно говоря, я бы предпочел сделать цикл foreach, чем шаблон с 1 строкой «оболочки».
Есть идеи получше?
Как будто я хочу сказать: «Эй, MVC, выдавай шаблон для каждого из этих парней. Но вместо использования соглашения имен для поиска шаблона, вот подсказка».