当ASP.NET MVC页面重新加载不按预期工作时,可能有多种原因导致,以下是一些可能的解决方法,也附带了一些代码示例:
public ActionResult MyAction()
{
// 清除缓存
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetNoStore();
// 重新加载页面逻辑
// ...
return View();
}
RedirectToAction
时未使用PRG模式(Post-Redirect-Get)
导致的。在处理Post请求时,应该使用RedirectToAction
来重定向到Get请求,以避免重复提交。[HttpPost]
public ActionResult MyAction(MyModel model)
{
// 处理Post请求
// ...
// 重定向到Get请求
return RedirectToAction("MyAction");
}
public ActionResult MyAction()
{
if (TempData["MyState"] != null)
{
// 恢复页面状态
var state = (MyState)TempData["MyState"];
// ...
}
else
{
// 加载页面逻辑
// ...
}
return View();
}
[HttpPost]
public ActionResult MyAction(MyModel model)
{
// 处理Post请求
// ...
// 保存页面状态
TempData["MyState"] = new MyState
{
// ...
};
// 重定向到Get请求
return RedirectToAction("MyAction");
}
public ActionResult MyAction()
{
// 加载页面逻辑
// ...
// 在重新加载页面时更新其他页面或控件的状态
TempData["OtherState"] = new OtherState
{
// ...
};
return View();
}
以上是一些可能的解决方法和代码示例,具体解决方法还需要根据具体情况进行调试和分析。同时,还建议在开发过程中使用调试工具和日志记录来帮助定位和解决问题。