1

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

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

当我在服务器端有断点时。我能够得到打击。

我确信调用了服务器端操作方法。MAC SAFARI 浏览器存在一些问题。

我在其他浏览器 IE 和 FF 中尝试了相同的用例,它似乎可以正常工作。

相当简单,但我在谷歌搜索时得到了正确的答案。

有人可以建议在 MAC 中解决这个问题吗?

谢谢 ,

维杰

4

2 回答 2

1

我还没有检查过,但我很确定Mac版 Safari并不是唯一这样做的浏览器。这是因为浏览器缓存的工作方式。当您返回浏览器历史记录时,Safari(以及 AFAIK Firefox)不会再次请求该页面。相反,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('');
         }
     }

})

注意:代码未经测试,但我希望它有所帮助(如果禁用页面的缓存失败):)

于 2009-12-15T10:24:57.367 回答
-1

尝试在您的表单上设置 autocomplete="off"

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

于 2009-12-15T09:17:53.640 回答