将数据从中间件传递到_Layout视图

时间:2019-06-24 10:42:03

标签: c# asp.net-mvc asp.net-core core

我的asp.net核心应用程序在_Layout.cshtml中有一个侧边栏。边栏是动态的,因此我需要PageData。我试图将PageData从我的PagesMiddleware传递给View(我不想在每个Controller中都为Views转发PageData)。


不要这样:[PagesMiddleware]->控制器-> _Layout.cshtml

PagesMiddleware:context.Items.Add("pages", pages);

每个控制器:ViewData["Pages"] = TempData["pages"];

_Layout:@ViewData["Pages"]


是否存在以下内容:[PagesMiddleware]->-> _Layout.cshtml

PagesMiddleware:ViewData["Pages"] = pages;

_Layout:@ViewData["Pages"]


PageData可以是字符串。如何在所有控制器中都没有多余(冗余)代码的情况下将字符串从中间件传递到_Layout视图?

1 个答案:

答案 0 :(得分:1)

根据对帖子的评论,从Razor视图来看,HttpContext对象始终为accessible

中间件

context.Items.Add("pages", pages);

查看

@{
    var pages = Context.Items["pages"];
}