【发布时间】:2017-03-01 12:21:10
【问题描述】:
我想在布局的共享视图中使用 ViewBag 值,但由另一个控制器提供。特别是,我想渲染主要动作,然后添加来自另一个控制器的一些变量,这些变量在很多页面中使用(但不是在所有页面中都可以证明使用全局变量的合理性)。
视图/共享/_Layout.cshtml
<!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>
控制器/myController.cs
namespace myProject.Controllers
{
public class myController : Controller
{
public void myAction() {
string test_value = "Hey!";
ViewBag.testval = test_value;
}
}
}
在布局中,我可以访问的唯一 Viewbag 变量是 RenderBody 的操作目标。
【问题讨论】:
-
如果您不将值传递给视图,那么您希望如何访问它们(您希望发生什么)
-
@StephenMuecke 我明白了...但是如何从另一个控制器向 ViewBag 添加新变量?
-
你不能,你需要将它们添加到生成视图的控制器中。
-
当您可以制作需要
testval的模型应该派生的basemodel 并且basemodel 具有testval 字符串时,为什么要使用viewbag。我期待着您的解决方案。以及您选择该选项的原因。
标签: asp.net asp.net-mvc razor asp.net-mvc-5