Если у меня есть ViewModel так:ASP.NET MVC 3 Пользовательский шаблон отображения с UIHint - для Loop обязательно?
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
И сильно типизированного View с линией HTML, как это:
@Html.DisplayFor(model => model.Submodel)
И шаблоне отображения с подпись такая:
@model MvcApplication1.Models.SomeViewModel
У меня ошибка: «элемент модели имеет тип List<SomeViewModel>
, но для этого словаря требуется модель типа SomeViewModel
.».
Что имеет смысл, но я бы надеялся, что встроенные шаблоны sms MVC начнутся, посмотрите, что это что-то вроде: IEnumerable
что-то и выработайте, чтобы вызвать мой шаблон N количества раз, например, как это обычно делается для Html.DisplayFor
без подсказки.
Похоже, что [UIHint]
переопределяет эту функциональность?
Очевидно, я могу указать другой шаблон, который принимает коллекцию, и называет Html.DisplayForModel()
, в основном имитируя MVC smarts. Но я надеюсь избежать этого. Честно говоря, я предпочел бы сделать цикл foreach, чем шаблон с 1 строкой «обертка».
Любые лучшие идеи?
Это как я хочу сказать: «Эй MVC, визуализируйте шаблон для каждого из этих парней. Но вместо того, чтобы использовать соглашение об именах, чтобы найти шаблон, вот подсказка».
так что нет никакого способа, чтобы использовать MVC встроенный в шаблонных СМАРТС (неявный цикл), все еще используя uihint? – RPM1984
Нет, не знаю. Даже если вы хотите его реализовать, что нужно сделать, чтобы окружить все элементы? В некоторых случаях это должна быть таблица, в других случаях - ul/ol. – mathieu
Дело в том, что у меня уже есть шаблон отображения для 'SomeViewModel', но причина, по которой я использую UIHint, заключается в том, что я хочу переопределить этот шаблон по умолчанию с новым. Шаблоны по умолчанию для коллекции будут просто отображать индивидуальный шаблон N раз. Он не принимает решений по ul/table. Я просто хочу отобразить ** другой ** шаблон N раз. но похоже, что это невозможно сделать без цикла for, который вроде бы сосет. Я всегда стараюсь избегать циклов. – RPM1984