【问题标题】:How to access the TempData in the startup.cs file?如何访问 startup.cs 文件中的 TempData?
【发布时间】:2021-09-03 18:03:30
【问题描述】:

我在 startup.cs 文件(Razor 页面)中有一个中间件,想检查 TempData 中是否存在值,但我找不到访问 TempData 的方法。我正在走向一个不好的做法吗?如果是这样,我如何在中间件中读取运行时生成的值?

【问题讨论】:

  • 你想做什么?您试图在中间件中访问什么样的值?
  • 请向我们展示您到目前为止所做的事情。 BR
  • 我将一些在整个应用程序中使用的值存储在 TempData 中。在某些情况下 TempData 过期或为空。我只是想看看是否有办法在 Razor 页面之外检查 TempData。

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


【解决方案1】:

你可以尝试使用ITempDataDictionaryFactory,这里有一个demo:

中间件:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.Use(async (context, next) =>
            {
                ITempDataDictionaryFactory factory = context.RequestServices.GetService(typeof(ITempDataDictionaryFactory)) as ITempDataDictionaryFactory;
                ITempDataDictionary tempData = factory.GetTempData(context);
                //get or set data in tempData
                var TestData=tempData["TestData"];
                // Do work that doesn't write to the Response.
                await next.Invoke();
                // Do logging or other work that doesn't write to the Response.
            });
       }

家庭控制器:

public class HomeController : Controller
    {
        
        public IActionResult Index()
        {
            TempData["TestData"] = "test";
            return View();
        }

       
    }

结果:

【讨论】:

  • 您能接受它作为答案吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-09-13
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多