ASP.NET MVC 3 _Layout.cshtml控制器

时间:2011-01-14 15:58:04

标签: asp.net-mvc-3 razor

任何人都可以帮我解决这个问题吗?我正在使用Razor视图引擎,我需要将一些数据传递给_Layout。我该怎么办?

3 个答案:

答案 0 :(得分:10)

像往常一样,您首先要创建一个表示数据的视图模型:

public class MyViewModel
{
    public string SomeData { get; set; }
}

然后是一个从某处获取数据的控制器:

public class MyDataController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            SomeData = "some data"
        };
        return PartialView(model);
    }
}

然后是相应的视图(~/Views/MyData/Index.cshtml)来表示数据:

@{
    Layout = null;
}
<h2>@Model.SomeData</h2>

最后在你的_Layout.cshtml里面包含这些数据:

@Html.Action("index", "mydata")

答案 1 :(得分:1)

您可以使用ViewBag传递数据。

在您的控制器中:

ViewBag.LayoutModel = myData;

访问您的布局:

@ViewBag.LayoutModel

它是一个动态对象,因此您可以使用任何所需的属性名称。

答案 2 :(得分:1)

ViewBag方法最简单。但是,如果您需要高级和类型化的功能,您还可以尝试使用公共控制器将该部分视图部分视图(将呈现从属部分的部分)(如果值可以自己计算并且不需要从其他控制器输入),并从_Layout上调用RenderPartial 如果你愿意,我可以给你更多关于它的信息......