部分的な見解についてのかみそりの質問を含むMVC 3
-
26-10-2019 - |
質問
部分的な見解についてのかみそりの質問を含む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チェックを行うことを忘れないでください。