ASP.NET MVC 3 _Layout.cshtml控制器

shu*_*umi 10 razor asp.net-mvc-3

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

Dar*_*rov 10

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

public class MyViewModel
{
    public string SomeData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

@{
    Layout = null;
}
<h2>@Model.SomeData</h2>
Run Code Online (Sandbox Code Playgroud)

最后在你的内部_Layout.cshtml包含这些数据:

@Html.Action("index", "mydata")
Run Code Online (Sandbox Code Playgroud)


GvS*_*GvS 1

您可以使用ViewBag来传递数据。

在你的控制器中:

ViewBag.LayoutModel = myData;
Run Code Online (Sandbox Code Playgroud)

在您的布局中访问:

@ViewBag.LayoutModel
Run Code Online (Sandbox Code Playgroud)

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