MVC 3 with Razor 关于部分 View 的问题。
我有这个:
@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”类型的模型项。好的,那么您不能在同一页面上使用 diff 模型吗?第一行以 @model MvcGroupie.Models.Message 开头,这样我就可以访问 model.postSubject 等。但是,如果我想添加回复并让人们能够从同一页面回复,但它不允许,他们将属于 @model MvcGroupie.Models.Reply...
好奇如何解决这个问题...我尝试了 @Html.Partial("~/Views/Shared/replyPartial.cshtml", Model.Reply) 但它无法识别 Model.Reply ....
我的学习方式遇到严重障碍,有什么帮助吗?
最佳答案
当您调用渲染采用不同模型的分部 View 时,您需要将模型传递给该 View 。默认行为是分部 View 将使用与调用它的 View 相同的模型,但这在您的情况下不起作用,因为模型不同。
试试这个:
@Html.RenderPartial("~/Views/Shared/replyPartial.cshtml", Model.Replies)
我假设您的 Message 对象具有 Replies 属性。不要忘记在部分 View 中进行空检查,以防消息没有任何回复。
关于asp.net-mvc-3 - MVC 3 with Razor 关于部分 View 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4824510/