发布/重定向/获取警报给用户?

时间:2015-02-09 20:52:17

标签: javascript asp.net post-redirect-get

我有一个ASP.NET WebForms应用程序,用于处理发布请求并通过JavaScript警报(通过ClientScript.RegisterStartupScript ...)向用户显示消息。在客户端代码执行后刷新页面的某个时刻,当然我得到"要显示此页面,Firefox必须发送重复任何操作的信息(例如搜索或订单确认)之前已执行过#34; 或其他浏览器中的类似内容。

现在,我知道Post/Redirect/Get模式,但如果我在帖子之后立即重定向 - 我无法显示JS警报。有没有办法显示警报并执行服务器端重定向?我知道我可以添加一个特定的查询字符串来重定向URL,在页面加载时检查它并显示警报(如果它存在),但这意味着如果重定向的页面被刷新 - 我将再次获得该警报,这是不可取的。有没有办法做到那些不会涉及复杂凌乱的旗帜?

1 个答案:

答案 0 :(得分:1)

ASP.NET MVC中的

TempData用于重定向。如果您在那里存储消息,您将能够检查它并在重定向后显示它。如果刷新页面,则不会保留该值,因此不会再次显示该值,从而补充PRG模式。

我已经看到它被实现为ActionResults的扩展,就像在FunnelWeb博客源中一样:

https://github.com/funnelweblog/FunnelWeb/blob/f28d1b1cb9c86e492f120948309de68c12141222/src/FunnelWeb.Web/Application/Mvc/MvcExtensions.cs

对于WebForms,我认为唯一的选择是使用Session并在访问后清除它,尽管你应该能够在它周围创建一个包装器,就像上面的链接一样,它以相同的方式运行:

equivalent of ASP.NET MVC TempData in ASP.NET