Из-за путаницы между всей информацией о mvc из всех предварительных выпусков и одним официальным выпуском я очень запутался, как обращаться с viewusercontrols.
Итак, раз и навсегда, скажите мне, как реализовать этот пример:
У меня есть список предстоящих событий, которые необходимо отобразить на нескольких страницах моего сайта. Поэтому я поместил новый 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 [], но мой viewusercontrol не должен зависеть от ViewData его родителя!
Я уверен, что есть очень простой ответ на этот вопрос, пожалуйста, поделитесь, как я закончил просматривать веб-страницы для этой проблемы.
Спасибо!
Простой ответ :
Viewusercontrol всегда должен получать свою модель из представления, в котором он находится. Обход этого, например, путем добавления файла codebehind в viewusercontrol, приведет к нарушению шаблона MVC.