我还没有检查过,但我很确定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('');
}
}
})
注意:代码未经测试,但我希望它有所帮助(如果禁用页面的缓存失败):)