Asp.net-Core-2.2

Asp.Net 核心臨時數據和重定向操作不起作用

  • June 10, 2019

我的 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;
}

如果該操作返回一個視圖,則可以正常工作。如果該操作正在呼叫重定向操作,我會收到以下錯誤。

InvalidOperationException: The 'Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.TempDataSerializer' cannot serialize an object of type

有什麼想法嗎 ?

TempDatauses Session,它本身使用IDistributedCache. IDistributedCache沒有接受對像或序列化對象的能力。因此,您需要自己執行此操作,即:

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

然後,當然,在重定向之後,您需要將其反序列化回您需要的對象:

ViewData["PopupMessages"] = JsonConvert.DeserializeObject<List<PopupMessage>(TempData["PopupMessages"]);

引用自:https://stackoverflow.com/questions/56528508