有没有办法在_ViewStart.cshtml文件中添加逻辑来驱动使用哪个_Layout文件?
从概念上讲,我想要执行下面的代码(在Home控制器中确定ViewBag.Context)。但是我在ViewBag下得到一个红色的波浪形(在当前上下文中不存在)。我想这是一个问题,因为这个视图页面不知道哪个控制器/方法正在调用它。
@{if (ViewBag.Context == "AA")
{
Layout = "~/Views/Shared/_Layout_AA.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
答案 0 :(得分:1)
FWIW,您也可以在控制器中执行此操作:
if (someCondition == "AA")
{
return View("MyView", "~/Views/Shared/_Layout_AA.cshtml");
}
else
{
return View ("MyView", "~/Views/Shared/_Layout.cshtml");
}
答案 1 :(得分:0)
使用PageData属性(它更适用于ASP.NET WebPages,很少在MVC中使用) 设置:
@{
PageData["message"] = "Hello";
}
提取
<h2>@PageData["message"]</h2>
答案 2 :(得分:0)
使用三元运算符:
DataGridView
答案 3 :(得分:0)
你们有些人没有看到“但我在ViewBag下得到了一个红色的波浪形(在当前上下文中不存在)。我想这是一个问题,因为这个视图页面不知道哪个控制器/方法正在调用它。”
我的解决方案是在开始时在控制器中将值嵌入到cookie中。然后在_ViewStart.cshtml文件中,我检索cookie值,现在可以使用它来指示我的布局逻辑。