我有两个aspx页面(A,B)中创建使用ASP.NET MVC。在文件中的我有几个复选框和文本框。

当我移动到页B和尝试通过按下浏览器的后退按钮(在MAC Safari浏览器)导航到页A,页面是没有得到刷新。该页面保留其旧值(复选框和文本框)。

当我在服务器端的断点。我能够获得成功。

我相信,在服务器端操作方法被调用。有一些问题与MAC Safari浏览器。

我试图相同的使用情况下,在其他浏览器IE和FF,它似乎corretly工作。

相当简单,但我力得到正确的答案,而谷歌搜索。

可能有人在MAC提供一个工作围绕这一点。?

谢谢,

维杰

有帮助吗?

解决方案

我没有检查,但我相当肯定Safari中的的Mac 的是不是这样做的浏览器。这是因为浏览器的缓存的工作方式。当你回去在浏览器历史记录,Safari浏览器(据我所知和火狐也)不会再次请求页面。取而代之的是,Safari浏览器/ WebKit的保持在先前访问的网页的内存拷贝,这样回去几乎是瞬间的。

在这种情况下,Safari浏览器是保持它的精确副本,包括输入端的值。在正常情况下,这可能是方便用户,和我说,我不认为Safari是唯一一个谁做这个(即使是这样,其他浏览器可以选择做同样的未来,所以不应指定它特定地)。

禁用的“A”行动缓存应该做的伎俩,因为它应该强制浏览器重新获得该页面(和复位的输入值)。是这样的:

[System.Web.Mvc.OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult A()
{
    return View();
}

如果这不能解决问题,则可能是在网页的onload事件的JavaScript清除值(这应该是非常容易的使用jQuery做的)。是这样的:

$(document).ready(function() {

     $('input').each( function() {
         if($(this).attr('type') == 'checkbox') { 
              this.checked=false;
         } else {
              $(this).val('');
         }
     }

})

请注意:该代码是未经测试,但我希望它能帮助(如果禁用缓存的页面失效):)

其他提示

尝试表单上设置自动完成= “关闭”

如果您刷新在Firefox上的页面也会发生这种情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top