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

6
我的 asp.net-core 应用程序在 _Layout.cshtml 中具有边栏。 边栏是动态的,因此我需要 PageData。 我尝试将 PageData 从我的 PagesMiddleware 传递到视图中(我不想为视图中的每个控制器转发 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 可以是字符串。 如何在所有控制器中没有额外的(冗余的)代码的情况下将字符串从 Middleware 传递到 _Layout 视图?

1
在 Razor 视图中,您可以访问 HttpContext 对象,因此可以始终忽略控制器部分并访问 HttpContext.Items。 - ibubi
以答案的形式发布您的评论,我会将其标记为解决方案。 - Janneck Lange
1个回答

10
根据帖子上的评论,HttpContext对象总是可以从Razor视图中访问中间件
context.Items.Add("pages", pages);

视图

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接