微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Dotnet Core 3.1 中将数据从一个控制器传递到另一个控制器

如何解决在 Dotnet Core 3.1 中将数据从一个控制器传递到另一个控制器

我是整个 MVC 模式的新手,遇到以下问题:

我有 2 个控制器,PayReqController 和 PayResController。我正在尝试从 PayReqController 的一个操作访问数据到 PayResController 的另一个操作,我尝试使用 TempData TempData["tsnpac"] = tsnpac 但它不起作用,因为我们需要在设置 tempData 后重定向到另一个控制器。还尝试使用 session Session["TSNPAC"] = "TSNPAC"; 将其访问到另一个控制器,但它的值为 null。

我的场景是在 PayReqController 中,在一个操作中,我有一个值,我需要在另一个控制器中获取该值而不重定向到该控制器,因为我的用例是重定向到其他一些 URL服务。

解决方法

要在请求范围之间(不仅仅是在控制器之间)共享数据,您可以使用 ON

共享数据:

HttpContext.Items

并使用共享数据:

//in the  first controller 

HttpContext.Items.Add("person",person);
,
&

据我所知,我们可以在控制器之间共享 session 值,关于 session 为 null,可能与 session 过期时间和 ASP.NET Core 中 session 的使用有关。

要在 asp.net Core 中使用 session,Startup 必须包含:

Startup.cs 如下:

swap(ptr1,ptr2)

通过使用上述配置,我们将会话过期时间设置为 20 分钟。

然后,在控制器中,我们可以使用以下代码来获取或设置会话中的值:

swap(&num1,&num2)

如果你想使用 session 来存储对象,你必须添加 SessionExtensions,勾选 this article

有关使用会话的更多详细信息,请查看 Session State

如果还是无法通过session获取到值,可以考虑将值存入缓存或数据库中。

,

我尝试了以下步骤: 在 startup.cs 中,在 ConfigureServices(IServiceCollection services) 方法中`

services.AddDistributedMemoryCache();services.AddSession(options =>
{options.IdleTimeout = TimeSpan.FromMinutes(20);options.Cookie.HttpOnly = true;options.Cookie.IsEssential = true;});

In Configure(IApplicationBuilder app,IWebHostEnvironment env),app.UseSession();In 1st Controllerstring MerchantCode = "T S Nandakumar"; HttpContext.Session.SetString("Code",MerchantCode);In 2nd Controllerstring codetest = HttpContext.Session.GetString("Code");`

但是在 URL 重定向之后的第二个控制器中,Getting Null value ,你能告诉我我是否按照你的方法遗漏了任何步骤吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。