MVC 3与Razor有关部分视图的问题

时间:2011-01-28 03:16:58

标签: asp.net-mvc-3 partialviews

MVC 3与Razor关于部分观点的问题。

我有这个:

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

在我学习任何帮助的过程中遇到严重障碍?

1 个答案:

答案 0 :(得分:4)

当您调用渲染采用不同模型的局部视图时,需要将模型传递给该视图。默认行为是局部视图将使用与调用它的视图相同的模型,但由于模型不同,这在您的情况下不起作用。

试试这个:

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

我假设你的Message对象有一个Replies属性。如果邮件没有任何回复,请不要忘记在部分视图中进行空检查。