ASP.NET MVC5从布局访问ViewBag?
我正在尝试将动态数据从我的控制器传递到我的视图和布局。 我目前正在使用ViewBag将数据从Controller传递到视图,该视图工作正常。 我无法从布局中访问ViewBag。 有没有办法做到这一点?
我正在使用ASP.NET W / MVC5(C#)。
编辑:更新了W /代码:
//layout.cshtml @ViewBag.username
产生此错误:
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS0103: The name 'ViewBag' does not exist in the current context
我建议你有一个布局使用的动作方法,它传递你需要的数据。 例如
public class ControllerName : Controller { public ActionMethod GetData() { return Content("Some data"); // Of whatever you need to return. } }
然后在布局和视图中,您可以调用
@Html.Action("GetData", "ControllerName")
考虑AppController控制器中的一个Action,它返回Index.cshtml视图:
public class AppController: Controller { public IActionResult Index() { ViewBag.Title = "Home Page"; return View(); } }
在我的Index.cshtml视图中,我可以直接调用@ ViewBag.Title来获取我之前在操作中设置的内容。
@ViewBag.Title | Example.com
您甚至可以传递列表等复杂数据,并使用Razor的模型/模型访问视图中的数据。
我希望我能帮助你解决这个问题。
一种简单的方法是从视图中设置ViewBag属性,然后可以在Layout文件中使用该属性
Index.cshtml
@{ ViewBag.Container = false; }
_Layout.cshtml
@{ var container = ViewBag.Container != null && !ViewBag.Container ? "" : "container"; } ...