【问题标题】:How to use TempData in ASP.NET Core React application如何在 ASP.NET Core React 应用程序中使用 TempData
【发布时间】:2020-12-18 09:06:09
【问题描述】:

我在 React 中创建了一个 ASP.NET Core 3.1 Web 应用程序。

我正在尝试在控制器操作方法中使用TempData。但我收到一个错误提示

TempData 在当前上下文中不存在

我该如何使用它?

【问题讨论】:

  • 请在此处添加一些代码,我们无法正确回答您的问题
  • @BipilRaut,我想要类似 TempData["EmailId"] = viewModel.EmailAddress; 的东西,但我收到一个错误:TempData 在当前上下文中不存在'
  • 嗨@Dyantest,我认为你需要检查控制器是否继承Controller。如果你继承ControllerBase,它会给出这样的错误。
  • 你好@Rena,是的。你说的对。它继承ControllerBase。因为它是一个api控制器。你能帮我看看如何在 Api 控制器中使用TempData。(我的项目在ReactJS)。
  • 嗨@Dyantest,Controller 继承自ControllerBase,所以Controller 拥有ControllerBase 拥有的所有东西。我认为将ControllerBase 更改为Controller 是更好的方法。请在下面查看我的答案。

标签: reactjs asp.net-core


【解决方案1】:

Controller继承自ControllerBase,所以Controller拥有ControllerBase拥有的所有东西。我认为将ControllerBase更改为Controller是更好的方法。

您可以查看以下源代码:

public abstract class Controller : ControllerBase, IActionFilter, IFilterMetadata, IAsyncActionFilter, IDisposable
{
    protected Controller();

    public dynamic ViewBag { get; }
    
    [ViewDataDictionary]
    public ViewDataDictionary ViewData { get; set; }

    public ITempDataDictionary TempData { get; set; }

    public void Dispose();

    //....
}

如果你必须使用ControllerBase。这是一个关于如何在api控制器中使用TempData的工作演示:

[ApiController]
[Route("[controller]")]
public class ValuesController : ControllerBase
{      
    private readonly ITempDataDictionaryFactory _tempDataDictionaryFactory;
    public ValuesController(ITempDataDictionaryFactory tempDataDictionaryFactory)
    {
        _tempDataDictionaryFactory = tempDataDictionaryFactory;
    }

    [HttpGet]
    public void Get()
    {
        var tempData = _tempDataDictionaryFactory.GetTempData(HttpContext);
        tempData["EmailId"] = "adasd";
        //do your stuff...
    }
}

更新:

仍然重复我在Get 方法中所做的操作,并在其他操作中获取 tempData,如下所示:

var tempData = _tempDataDictionaryFactory.GetTempData(HttpContext);
var data = tempData["EmailId"];

【讨论】:

  • 谢谢。但是你能建议如何在另一个操作方法中访问tempData["EmailId"]
  • API 不需要TempData。没有视图可以接收存储在那里的值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 2018-10-08
  • 2021-12-17
  • 2018-07-02
  • 2016-04-13
  • 2020-07-06
  • 1970-01-01
相关资源
最近更新 更多