我的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
,后者本身使用IDistributedCache
。 IDistributedCache
不具有接受对象或序列化对象的功能。结果,您需要自己执行此操作,即:
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/