Из-за путаницы между всей информацией, которая есть там о mvc из всех предварительных версий и одной официальной версии, я очень смущен, как бороться с viewusercontrols. Итак, раз и навсегда, скажите мне, как реализовать этот пример:ASP.Net MVC ViewUserControl с контроллером с использованием MVC 1.0
У меня есть список предстоящих событий, которые необходимо отобразить на нескольких страницах моего сайта. Поэтому я поместил новый ViewUserControl (ListEvents.ascx) внутри моей папки Views \ Shared.
Я прошу это ListEvents.ascx оказать на моем Home/Index зрения, как это:
<p>
Here's a list of events:
<% Html.RenderPartial("ListEvents");%>
</p>
Как бы идти о прохождении моей модели к этому ViewUserControl? Я знаю, что могу это сделать:
<p>
Here's a list of events:
<% Html.RenderPartial("ListEvents", (new Model.Services.EventService(null)).ListEvents());%>
</p>
Но это не похоже, очень умный, что нужно сделать, создавая новую модель изнутри вид ?! Или я здесь не прав? Я даже не могу пройти какое-либо подтверждение, поэтому нулевой параметр. Таким образом, альтернативным вариантом является сохранение этих данных в члене ViewData [], но мое управление viewuser не должно зависеть от ViewData его родителя!
Я уверен, что есть очень простой ответ на этот вопрос, пожалуйста, поделитесь, поскольку я сделал просмотр в Интернете по этой проблеме.
Спасибо!
Простой ответ: Viewviewercontrol должен всегда получать свою модель из вида, в котором он находится. Работая вокруг этого, например, добавив файл codebehind в viewusercontrol, нарушит шаблон MVC.
Да, но тогда модель моей ViewUserControl по-прежнему зависит от модели страницы она находится в И это точно чего я хочу избежать. – Peter
Они фактически зависят от единственного свойства вашей модели, а не от самой модели. Две совершенно разные модели могут иметь одно и то же свойство. –
Итак, каждый раз, когда мне нужно реализовать viewusercontrol в представлении, мне нужно убедиться, что контроллер для этого представления добавляет модель представления к модели, используемой моим viewusercontrol? – Peter