asp.net-mvc-3 - MVC 3 with Razor 关于部分 View 的问题

标签 asp.net-mvc-3 partialviews

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/

相关文章:

asp.net-mvc-3 - 如何在 Razor View 中编写递归函数?

asp.net-mvc-3 - 我的 MVC BeginForm 如何知道要发布到哪个 url?

asp.net-mvc-3 - MVC 3 现场验证始终关注失败

asp.net-mvc - 如何在ASP.NET MVC部分 View 中将匿名列表用作模型?

asp.net-mvc-3 - 在BeginForm样式的一次性html帮助器中捕获打包的内容

javascript - jQuery:将所有ready()规则应用于新元素的技巧或最佳实践(不谈论live()或on())

asp.net-mvc - 在 MVC 中呈现局部 View

c# - 当新模型实例传递给局部 View 时,字段仍然包含表单数据

javascript - MVC 部分 View Javascript