2014-03-12 325 views
0

我有一些代码,显示弹出时提交按钮点击JS后退按钮点击

$(document).ready(function() { 
    .... 
    @if (TempData.ContainsKey("TripUpdateSuccess")) 
    { 
     @:alertify.set({ delay: 3000 }); 
     @:alertify.success("Transport " + @(Model.BookingID) + " has been updated."); 
     TempData.Remove("TripUpdateSuccess"); 
    } 
} 

当用户点击保存,提交发生这种弹出窗口显示(alertify.js) 然后用户点击后退按钮,这弹出窗口显示。 似乎返回按钮恢复ASP.NET MVC中的TempData对象的状态。

我的任务是在按下后退按钮时不显示此弹出窗口。 这可以怎么做?

忘了说,提交重定向到此页面,所以这就是为什么后退按钮指向此页面。

[HttpPost] 
public ActionResult TripUpdate(TripUpdateModel model) 
{ 
    .... 
    // pseudo code 
    if (ok) 
     TempData["TripUpdateSuccess"] = true; 
    else if (TempData.ContainsKey("TripUpdateSuccess")) 
        TempData.Remove("TripUpdateSuccess"); 

} 
+0

在什么时候,你填充的TempData [ “TripUpdateSuccess”]? –

+0

在发布调试之前转储TempData并且将回答您的问题。 – Botonomous

+0

更新的消息。 TempData [“TripUpdateSuccess”]在控制器的操作中设置,如果有任何问题,则在最后一行中。如果不行,我在相同控制器的动作中从TempData中删除“TripUpdateSuccess”。 – user3328720

回答

0

什么问题?当用户点击返回按钮时,你需要隐藏弹出窗口吗?

+0

是的,如果我可以在js中检测到通过后退按钮加载的页面 - 这将解决我的问题 – user3328720

+0

也许您需要使用location.reload()重新加载页面上的按钮。或者使用jquery方法隐藏弹出窗口hid(); – user3127896

0

基于您的评论:

“不知道它去,但操作方法并不怎么当后退按钮点击名为”

这听起来像你所得到的页面的缓存版本,当你点击后退按钮,而不是实际完成数据库的全面往返。基本上,您需要禁用浏览器缓存的页面,以便完成一次完整的往返。

看看这个线程:Back button not requesting asp.net mvc get method

相关问题