อะไรจะเป็นวิธีง่ายๆ ในการบังคับให้ ActionResult
ของฉันเริ่มทำงานเสมอเมื่อฉันเข้าสู่หน้านี้ เมื่อคลิกย้อนกลับของเบราว์เซอร์ สิ่งนี้จะไม่ทำงาน
public ActionResult Index()
{
//do something always
return View();
}
อะไรจะเป็นวิธีง่ายๆ ในการบังคับให้ ActionResult
ของฉันเริ่มทำงานเสมอเมื่อฉันเข้าสู่หน้านี้ เมื่อคลิกย้อนกลับของเบราว์เซอร์ สิ่งนี้จะไม่ทำงาน
public ActionResult Index()
{
//do something always
return View();
}
การปิดใช้งานแคชบน ActionResult
บังคับให้เพจรีเฟรชแต่ละครั้งแทนที่จะเรนเดอร์เวอร์ชันแคช
[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
public ActionResult Index()
{
//do something always
return View();
}
ตอนนี้เมื่อคุณคลิกปุ่มย้อนกลับของเบราว์เซอร์ สิ่งนี้จะถูกกดทุกครั้ง
คุณสามารถลองใช้ 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>
สิ่งนี้อาจมีประโยชน์สำหรับผู้ที่ไม่ต้องการจัดการกับโค้ดฝั่งเซิร์ฟเวอร์ซึ่งต่างจากโซลูชันที่ยอมรับ
สิ่งเดียวที่ทำคือกำหนดค่าให้กับอินพุตที่ซ่อนอยู่ในการโหลดครั้งแรก ซึ่งจะยังคงอยู่ในการโหลดครั้งที่สอง ซึ่งในกรณีนี้เพจจะถูกบังคับรีเฟรช