質問

部分的な見解についてのかみそりの質問を含むMVC 3。

私はこれを持っています:

@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」タイプのモデル項目が必要です。 OK、それで同じページでDIFFモデルを使用することはできませんか?最初の行は@model mvcgroupie.models.messageで始まるので、model.postsubjectなどにアクセスできます。しかし、返信を追加して、それが許可されていないのと同じページから返信できるようにしたい場合、彼らは@model mvcgroupie.models.replyに該当します...

これを回避する方法に興味があります... @html.partial( "〜/views/shared/raplepartial.cshtml"、model.reply)を試しましたが、model.replyを認識しません。

私の助けの方法で深刻な障害がありますか?

役に立ちましたか?

解決

別のモデルを取る部分的なビューをレンダリングするために呼び出しを行うと、モデルをそのビューに渡す必要があります。デフォルトの動作は、部分ビューがそれを呼んだビューと同じモデルを使用することですが、モデルが異なるため、それはあなたのケースでは機能しません。

これを試して:

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

私はあなたのメッセージオブジェクトに返信プロパティがあると仮定しています。メッセージに返信がない場合に備えて、部分的なビューでnullチェックを行うことを忘れないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top