asp.net-core-2.2 - Asp.Net核心Tempdata和redirecttoaction不起作用

标签 asp.net-core-2.2 tempdata redirecttoaction

我的basecontroller类中有一个方法,可将数据添加到tempdata中以显示弹出消息。

protected void AddPopupMessage(SeverityLevels severityLevel, string title, string message)
{
    var newPopupMessage = new PopupMessage()
    {
        SeverityLevel = severityLevel,
        Title = title,
        Message = message
    };
    _popupMessages.Add(newPopupMessage);
    TempData["PopupMessages"] = _popupMessages;
}

如果该操作返回一个 View ,则可以正常工作。如果该操作正在调用redirectotoaction,则会出现以下错误。
InvalidOperationException: The 'Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.TempDataSerializer' cannot serialize an object of type

有什么想法吗 ?

最佳答案

TempData使用Session,后者本身使用IDistributedCacheIDistributedCache不具有接受对象或序列化对象的功能。结果,您需要自己执行此操作,即:

TempData["PopupMessages"] = JsonConvert.SerializeObject(_popupMessages);

然后,当然,在重定向之后,您需要将其反序列化为所需的对象:
ViewData["PopupMessages"] = JsonConvert.DeserializeObject<List<PopupMessage>>(TempData["PopupMessages"]);

关于asp.net-core-2.2 - Asp.Net核心Tempdata和redirecttoaction不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56528508/

相关文章:

asp.net-mvc - 带有错误消息的重定向到操作

asp.net-mvc - 单元测试 RedirectToRouteResult

c# - MediatR - 处理查询中的当前用户

asp.net-core - 更改 ASP.NET Core Razor 页面中的默认登录页面?

asp.net-mvc - ASP.NET MVC 异常处理

Asp.net Core TempData 生命周期和搜索词

c# - Asp Net Core 集成测试 - 方法不允许响应

c# - 如何在 ASP.NET Core MVC 中显示特定的 ModelState 错误?

c# - 应该放在 TempData 中的最大数据量是多少?

asp.net-mvc - 将模型传递给 RedirectToAction()