Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 共享视图布局中的Viewbag变量_Asp.net_Asp.net Mvc_Razor_Asp.net Mvc 5 - Fatal编程技术网

Asp.net 共享视图布局中的Viewbag变量

Asp.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

我想在布局的共享视图中使用ViewBag值,但这是从另一个控制器提供的。特别是,我希望呈现主体操作,然后添加几个来自另一个控制器的变量,这些变量在很多页面中使用(但不是在所有页面中都使用,以证明使用全局变量是正确的)

视图/Shared/_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>

在布局中,我唯一可以访问的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();
}