Domanda

MVC 3 con Razor domanda su una vista parziale.

ho questo:

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

Per un semplice post e rispondere MVC app im giocare con per l'apprendimento. Non posso ottenere un parziale di visualizzare per le risposte: /

Se aggiungo parziale ottengo 'MvcGroupie.Models.Message', ma questo dizionario richiede un elemento del modello di tipo 'MvcGroupie.Models.Reply'. Ok, quindi non puoi mai utilizzare diff modelli sulla stessa pagina? I primi riga inizia con @model MvcGroupie.Models.Message modo posso accedere alla model.postSubject e simili. Ma se voglio aggiungere le risposte e avere persone in grado di rispondere dalla stessa pagina doesnt permettono, sarebbero caduti sotto @model MvcGroupie.Models.Reply ...

Curioso come ottenere intorno a questo ... Ho provato @ Html.Partial ( "~ / Vista / Shared / replyPartial.cshtml", Model.Reply) ma doesnt riconoscere Model.Reply ....

blocco stradale grave a mio modo di imparare qualsiasi aiuto?

È stato utile?

Soluzione

When you make the call to render a partial view that takes a different model you need to pass the model to that view. The default behavior is that the partial view will use the same model as the view that called it, but that won't work in your case because the models are different.

Try this:

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

I'm assuming your Message object has a Replies property. Don't forget to do a null check in your partial view in case the message doesn't have any replies.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top