Frage

MVC 3 mit rasiermesserer Frage zu teilweise Ansichten.

Ich habe das :

@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>

Für einen sehr einfachen Beitrag und Antworten mvc -App spiele ich zum Lernen. Ich kann nicht teilweise für Antworten angezeigt werden:/

Wenn ich das Teil hinzufüge, erhalte ich 'mvcGroupie.models.message', aber dieses Wörterbuch erfordert ein Modellelement vom Typ 'mvcGroupie.models.reply'. Ok, Sie können also keine Diff -Modelle auf derselben Seite verwenden? Die erste Zeile beginnt mit @Model mvcGroupie.models.message, damit ich auf das Modell.PostSubject und dergleichen zugreifen kann. Aber wenn ich die Antworten hinzufügen und Leute von derselben Seite beantworten kann, die sie nicht zulässt, würden sie unter @Model MVCGroupie fallen.

Neugierig, wie man das umgeht ... Ich habe @html.Partial ("~/views/Shared/ReplyPartial.cshtml", modell.Reply) ausprobiert.

Ernsthafte Straßensperre in meiner Art, Hilfe zu lernen?

War es hilfreich?

Lösung

Wenn Sie den Anruf tätigen, um eine teilweise Ansicht zu machen, die ein anderes Modell einnimmt, müssen Sie das Modell an diese Ansicht übergeben. Das Standardverhalten ist, dass die Teilansicht das gleiche Modell wie die Ansicht verwendet, die sie genannt hat, aber in Ihrem Fall nicht funktioniert, da die Modelle unterschiedlich sind.

Versuche dies:

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

Ich gehe davon aus, dass Ihr Nachrichtenobjekt über eine Antwortenmobilie verfügt. Vergessen Sie nicht, einen Null -Check in Ihre Teilansicht durchzuführen, falls die Nachricht keine Antworten enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top