我有一个ASP.NET WebForms应用程序,用于处理发布请求并通过JavaScript警报(通过ClientScript.RegisterStartupScript
...)向用户显示消息。在客户端代码执行后刷新页面的某个时刻,当然我得到"要显示此页面,Firefox必须发送重复任何操作的信息(例如搜索或订单确认)之前已执行过#34; 或其他浏览器中的类似内容。
现在,我知道Post/Redirect/Get模式,但如果我在帖子之后立即重定向 - 我无法显示JS警报。有没有办法显示警报并执行服务器端重定向?我知道我可以添加一个特定的查询字符串来重定向URL,在页面加载时检查它并显示警报(如果它存在),但这意味着如果重定向的页面被刷新 - 我将再次获得该警报,这是不可取的。有没有办法做到那些不会涉及复杂凌乱的旗帜?
答案 0 :(得分:1)
TempData
用于重定向。如果您在那里存储消息,您将能够检查它并在重定向后显示它。如果刷新页面,则不会保留该值,因此不会再次显示该值,从而补充PRG模式。
我已经看到它被实现为ActionResults的扩展,就像在FunnelWeb博客源中一样:
对于WebForms,我认为唯一的选择是使用Session
并在访问后清除它,尽管你应该能够在它周围创建一个包装器,就像上面的链接一样,它以相同的方式运行: