【发布时间】:2013-06-11 13:56:37
【问题描述】:
我的 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>
}
this blog posting 中更详细地介绍了使用 TempData。有趣的是,作者还建议使用自定义 HTTP 标头作为替代方案。一个有趣的想法,但是does not work with POST-REDIRECT-GET。
使用TempData 是首选选项,还是有“更好”的选择? (例如,更强的类型)
【问题讨论】:
标签: c# asp.net-mvc-4