1

(я ссылаться на this tutorial в этом тексте)Asp MVC 2: Typed редактор шаблона

Я хочу использовать Html.EditorFor (или Html.Editor) хелперы.

Если UserControl нужны дополнительные данные он передается через

...EditorFor(model => model.Album, new { Artists = Model.Artists, ... })

В UserControl он доступен через ViewData [stringKey], т.е.

... new SelectList(ViewData["Artists"] as IEnumerable, ...

Мне это пахнет маленькой рыбой y как я бы предпочитает строго типизированный ViewModel, который гарантирует, что конкретные данные доступны.

Я сейчас немного застрял, поскольку не знаю, есть ли «типизированный способ», чтобы найти или я должен принять этот способ как есть.

Как вы решили эту проблему? Любая помощь ценится!

Lg
warappa

ответ

0

я бы, вероятно, изменить вид модели, так что мне не нужно, чтобы передать эту дополнительную информацию. Вы могли бы сделать, например, альбом имеет коллекцию художников. Теперь все тха вы должны сделать, это:

<%: Html.EditorFor(model => model.Album) %> 

И в шаблоне редактора:

<%: Html.DropDownListFor(x => x.SelectedArtist, new SelectList(Model.Artists)) %> 
+1

Я думаю'Album' не должно быть связано с чем-то вроде: «Что все художники мы знаем? " Но другой вопрос: Неправильно ли использовать ссылку на репозиторий из шаблона редактора? –

+0

@Warappa, да, очень плохо ссылаться на репозиторий из представления. В представлении есть только данные, переданные с контроллера. Это контроллер, который должен манипулировать репозиторием. –

+0

ОК, я вижу. Если я хочу сделать это, мне нужно сделать UserControl для типа «Альбом», но для ** «AlbumEditorViewModel» ** (и было бы это лучше всего)? –