【发布时间】:2014-04-24 06:18:48
【问题描述】:
当我点击此页面时,强制我的ActionResult 始终触发的简单方法是什么?例如,在浏览器返回点击时,这不会执行。
public ActionResult Index()
{
//do something always
return View();
}
【问题讨论】:
标签: asp.net-mvc-4
当我点击此页面时,强制我的ActionResult 始终触发的简单方法是什么?例如,在浏览器返回点击时,这不会执行。
public ActionResult Index()
{
//do something always
return View();
}
【问题讨论】:
标签: asp.net-mvc-4
在ActionResult 上禁用缓存会强制页面每次刷新而不是呈现缓存版本。
[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
public ActionResult Index()
{
//do something always
return View();
}
现在,当您单击浏览器的返回按钮时,每次都会被点击。
【讨论】:
VaryByParam = "None" 提到的here 可以吗?
你可以试试onunload事件和ajax:
<script>
window.onunload = function () {
$.ajax({
url: '/ControllerName/Index',
type: 'POST',
datatype: "json",
contentType: "application/json; charset=utf-8"
});
};
</script>
【讨论】:
将此代码添加到我的 HTML 对我来说效果很好:
<input id="alwaysFetch" type="hidden" />
<script>
setTimeout(function () {
var el = document.getElementById('alwaysFetch');
el.value = el.value ? location.reload() : true;
}, 0);
</script>
这对于那些不想处理服务器端代码而不是接受的解决方案的人来说可能会派上用场。
它所做的只是在第一次加载时为隐藏输入分配一个值,该值将在第二次加载时保留,在这种情况下页面会被强制刷新。
【讨论】: