我的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视图?
答案 0 :(得分:1)
根据对帖子的评论,从Razor视图来看,HttpContext对象始终为accessible
中间件
context.Items.Add("pages", pages);
查看
@{
var pages = Context.Items["pages"];
}