Question

MVC 3 avec la question Razor sur les vues partielles.

J'ai ceci:

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

Pour un poste très simple et répondre MVC app im jouer avec l'apprentissage. Je ne peux pas obtenir une partie pour afficher des réponses: /

Si j'ajoute la partie i get 'MvcGroupie.Models.Message', mais ce dictionnaire a besoin d'un élément de modèle de type 'MvcGroupie.Models.Reply'. Ok, donc vous ne pouvez pas toujours utiliser diff modèles sur la même page? La première ligne commence par @model MvcGroupie.Models.Message afin que je puisse accéder au model.postSubject et autres. Mais si je veux ajouter les réponses et avoir des gens capables de répondre de la même page il ne marche pas permettre, ils tomberaient sous @model MvcGroupie.Models.Reply ...

Curieux comment contourner ce problème ... J'ai essayé @ Html.Partial ( "~ / Vues / Shared / replyPartial.cshtml", Model.Reply), mais il ne marche pas reconnaître Model.Reply ....

sérieux obstacle à ma façon d'apprendre une aide?

Était-ce utile?

La solution

Lorsque vous faites l'appel à rendre une vue partielle qui prend un modèle différent, vous devez passer le modèle à ce point de vue. Le comportement par défaut est que la vue partielle utilisera le même modèle que la vue qui l'a appelé, mais qui ne fonctionnera pas dans votre cas parce que les modèles sont différents.

Essayez ceci:

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

Je suppose que votre objet de message a une propriété Réponses. Ne pas oublier de faire un chèque nul dans votre vue partielle en cas, le message n'a pas de réponses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top