正如其他人所提到的,TempData
它是最直接的使用选项之一。在我看来,它在常规 ASP.NET 中的主要缺点是它使用会话存储来存储其内容。这意味着您需要做额外的工作才能让它在网络场上运行,或者您需要首先打开会话。
TempData
是一个基于字符串的字典,你可以在里面放任何东西,并且默认情况下只在以后的任何请求中取出一次。在打电话之前,RedirectToAction()
您设置您的消息,并在下一个请求时检查消息并显示它们。通过检索消息,它们会在请求结束时自动删除。
作为替代方案,您可以使用 cookie 在两个请求之间传输消息。本质上,您可以推出自己的解决方案,也可以实现自定义,通过 cookieITempDataProvider
传输内容。TempData
鉴于消息很短,因此对性能的影响很小。请注意,您需要正确保护 cookie。
我遇到了同样的问题,并为它创建了一个名为FlashMessage的解决方案。它在NuGet上可用。用法很简单:您只需在调用之前排队一条消息RedirectToAction()
,如下所示:
FlashMessage.Confirmation("Your message");
return RedirectToAction("AdminUsers", "Admin");
在您看来,您包含以下语句来呈现任何先前排队的消息:
@Html.RenderFlashMessages()