Asp.net 共享视图布局中的Viewbag变量
我想在布局的共享视图中使用ViewBag值,但这是从另一个控制器提供的。特别是,我希望呈现主体操作,然后添加几个来自另一个控制器的变量,这些变量在很多页面中使用(但不是在所有页面中都使用,以证明使用全局变量是正确的) 视图/Shared/_Layout.cshtmlAsp.net 共享视图布局中的Viewbag变量,asp.net,asp.net-mvc,razor,asp.net-mvc-5,Asp.net,Asp.net Mvc,Razor,Asp.net Mvc 5,我想在布局的共享视图中使用ViewBag值,但这是从另一个控制器提供的。特别是,我希望呈现主体操作,然后添加几个来自另一个控制器的变量,这些变量在很多页面中使用(但不是在所有页面中都使用,以证明使用全局变量是正确的) 视图/Shared/_Layout.cshtml <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=u
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css_custom")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@Html.Action("myAction", "myController")
<p>Value: @ViewBag.testval </p>
@RenderBody()
</body>
</html>
在布局中,我唯一可以访问的Viewbag变量是RenderBody的操作目标的变量。您应该返回该视图
public ActionResult Index()
{
ViewBag.testval = "Test value";
return View();
}
我不需要页面,我只需要一些变量。所以使用json或其他东西(带有javascript回调的ajax调用)。MVC操作在服务器端运行,因此您的视图不会刷新视图包,因为您使用的void方法不会向客户端返回任何内容。如果您不将值传递给视图,那么您希望如何访问它们(您希望发生什么)@StephenMuecke我理解。。。但是如何将来自另一个控制器的新变量添加到ViewBag?您不能,您需要将它们添加到生成视图的控制器中。当您可以创建一个需要testval的模型且basemodel具有testval字符串的basemodel时,为什么要使用ViewBag呢。我期待着你的解决方案。以及你为什么选择这个选项。
public ActionResult Index()
{
ViewBag.testval = "Test value";
return View();
}