Bri*_*der 14 redirecttoaction tempdata asp.net-core-2.2
我的 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;
}
Run Code Online (Sandbox Code Playgroud)
如果操作返回一个视图,这可以正常工作。如果该操作正在调用重定向操作,则会出现以下错误。
InvalidOperationException: The 'Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.TempDataSerializer' cannot serialize an object of type
Run Code Online (Sandbox Code Playgroud)
有什么想法吗 ?
Chr*_*att 28
TempData使用Session,它本身使用IDistributedCache. IDistributedCache没有能力接受对象或序列化对象。因此,您需要自己执行此操作,即:
TempData["PopupMessages"] = JsonConvert.SerializeObject(_popupMessages);
Run Code Online (Sandbox Code Playgroud)
然后,当然,在重定向之后,您需要将其反序列化回您需要的对象:
ViewData["PopupMessages"] = JsonConvert.DeserializeObject<List<PopupMessage>>(TempData["PopupMessages"]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12953 次 |
| 最近记录: |