从独立于控制器的共享局部视图访问模型

jon*_*nas 1 asp.net asp.net-mvc-3

我正在asp.net mvc 3中创建一个简单的网页.

我有一个侧边栏加载随机引用,侧边栏在每个页面上,所以它是布局的一部分,独立于控制器.

从该视图访问数据模型的正确方法是什么?我是否必须从每个控制器传递数据?

我的部分视图文件看起来像:

@model MvcApplication1.Models.CitationModel
@Model.Citation
Run Code Online (Sandbox Code Playgroud)

但这导致空引用.

模型就像

   public class CitationModel
{
    public string Citation{ get { return "Test"; } }
}
Run Code Online (Sandbox Code Playgroud)

dan*_*wig 7

我会通过儿童行动来做到这一点.这样,您可以保持视图强类型(没有viewbag或viewdata),而不必将其放入发送到您的布局的"主"视图模型中:

<div id="sidebar">
    @Html.Action("RandomCitations", "Citations")
</div>
Run Code Online (Sandbox Code Playgroud)

在CitationsController中:

[ChildActionOnly]
public PartialViewResult RandomCitations()
{
    var model = new CitationModel();
    // populate model
    return PartialView(model);
}
Run Code Online (Sandbox Code Playgroud)

您的视图将保持不变,并将注入每个布局的侧边栏div.