任何人都可以帮我解决这个问题吗?我正在使用Razor视图引擎,我需要将一些数据传递给_Layout。我该怎么办?
答案 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 如果你愿意,我可以给你更多关于它的信息......