MVC 3 с Razor вопрос о частичных взглядах
MVC 3 с Razor вопрос о частичных взглядах.
У меня есть это:
@model MvcGroupie.Models.Message
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<fieldset>
<legend>Message</legend>
<div class="display-label">postCreator</div>
<div class="display-field">@Model.postCreator</div>
<div class="display-label">postDate</div>
<div class="display-field">@String.Format("{0:g}", Model.postDate)</div>
<div class="display-label">postSubject</div>
<div class="display-field">@Model.postSubject</div>
<div class="display-label">postBody</div>
<div class="display-field">@Model.postBody</div>
</fieldset>
@Html.Partial("~/Views/Shared/replyPartial.cshtml")
<p>
@if(Model.postCreator == User.Identity.Name) {@Html.ActionLink("Edit", "Edit", new { id=Model.postID } + " | ")}
@Html.ActionLink("Reply", "Reply", new { id=Model.postID }) |
@Html.ActionLink("Back to List", "Index")
</p>
Для очень простого поста и ответа MVC приложение я играю для обучения. Я не могу получить частичное отображение ответов:/
Если я добавляю частичное, я получаю "MvcGroupie.Models.Message", но для этого словаря требуется элемент модели типа "MvcGroupie.Models.Reply". Итак, вы не можете использовать разные модели на одной странице? Первая строка начинается с @model MvcGroupie.Models.Message, поэтому я могу получить доступ к model.postSubject и тому подобному. Но если я хочу добавить ответы и иметь людей, которые могут отвечать с одной и той же страницы, это не позволяет, они попадают под @model MvcGroupie.Models.Reply...
Любопытно, как обойти это... Я попытался @Html.Partial("~/Views/Shared/replyPartial.cshtml", Model.Reply), но он не распознает Model.Reply ....
Серьезный контрольно-пропускной пункт в моем способе изучения любой помощи?
1 ответ
Когда вы делаете вызов для визуализации частичного представления, которое принимает другую модель, вам нужно передать модель в это представление. Поведение по умолчанию состоит в том, что частичное представление будет использовать ту же модель, что и вызывающее ее представление, но в вашем случае это не сработает, потому что модели разные.
Попробуй это:
@Html.RenderPartial("~/Views/Shared/replyPartial.cshtml", Model.Replies)
Я предполагаю, что у вашего объекта Message есть свойство Replies. Не забудьте выполнить нулевую проверку в своем частичном представлении, если на сообщение нет ответов.