我对我的 ASP.NET MVC Web 应用程序有一个相当简单的(解释)要求:
在任何页面上,都能够根据前一页上发生的事件显示消息。消息可能包括动态内容,例如用户在表单提交中输入的信息。
类似于这个...
该方法必须适用于POST-REDIRECT-GET方案。
如果用户在应用程序上打开了两个浏览器选项卡(它们共享会话状态),那么任何消息都应该只显示在发生相关事件的选项卡中。
例如:
提交反馈表后,感谢用户的消息(按姓名)
登录时,一条消息告诉用户他们上次登录应用程序的日期/时间
我的第一个想法是为此使用带有适当模型(带有string
属性)的强类型视图。然而,这意味着更改每个现有的非强类型视图以使用此模型,并更新所有现有模型以继承此新模型。
这似乎有点矫枉过正。
另一种方法是将消息存储在TempData
:
// In my controller
TempData["Message"] = "Some kind of message";
// In my shared master view
@if (TempData["Message"] != null)
{
<div class="message">@TempData["Message"]</div>
}
这篇博文TempData
中更详细地介绍了使用。有趣的是,作者还建议使用自定义 HTTP 标头作为替代方案。一个有趣的想法,但不适用于 POST-REDIRECT-GET。
是使用TempData
首选选项,还是有“更好”的选择?(例如,更强的类型)