Вопрос

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 '. Итак, вы не можете использовать модели DIFF на одной странице? Первая строка начинается с @model mvcgroupie.models.message, чтобы я мог получить доступ к модели.postsubject и тому подобное. Но если я захочу добавить ответы и позволить людям отвечать на той же странице, это не допускает этого, они попадут под @Model MVCGroupie.Models.Reply ...

Любопытно, как обойти это ... Я попробовал @html.partial ("~/views/shared/replypartial.cshtml", model.reply), но она не распознает model.reply ....

Серьезное контрольно -пропускное средство в моем способе изучения помощи?

Это было полезно?

Решение

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

Попробуй это:

@Html.RenderPartial("~/Views/Shared/replyPartial.cshtml", Model.Replies)

Я предполагаю, что у вашего объекта сообщения есть свойство ответов. Не забудьте сделать нулевую проверку в вашем частичном представлении, если в сообщении нет никаких ответов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top