之间有什么区别:
public ActionResult logOff()
{
FormsAuth.SignOut();
return RedirectToAction("index", "Home");
}
和
public ActionResult logOff()
{
FormsAuth.SignOut();
return index();
}
答案 0 :(得分:8)
是
使用RedirectToAction()
,您的用户将被重定向到索引页面(这是他们在浏览器地址栏中看到的内容)。只需返回index()
方法的结果,即可将当前页面(LogOff
?)填入另一页的内容。
在这种情况下,可能没有区别,但如果您的操作执行某些逻辑,那么当用户只是刷新页面时,您可能会遇到问题。
答案 1 :(得分:1)
当通过HTTP POST请求将Web表单提交给服务器时, 尝试在某些情况下刷新服务器响应的Web用户 用户代理可以导致原始HTTP POST请求的内容 要重新提交,可能会导致意外结果,例如a 重复网页购买。为避免此问题,许多Web开发人员使用 PRG模式1 - 而不是直接返回网页, POST操作返回重定向命令。 HTTP 1.1 规范引入了HTTP 303响应代码以确保在 在这种情况下,Web用户的浏览器可以安全地刷新服务器 响应而不会导致初始HTTP POST请求 重新提交。然而,目前使用的最常见的商业应用 (新旧相似)仍然继续发布HTTP 302响应 这些情况。通常避免使用HTTP 301,因为 符合HTTP-1.1标准的浏览器之后不会将方法转换为GET 接收HTTP 301,这通常用于HTTP 302. [2]然而, 在不希望POST的情况下,HTTP 301可能是优选的 要转换为GET参数的参数,因此记录在中 日志。 PRG模式无法解决重复表单的每个场景 提交。一些已知的重复表单提交,PRG不能 解决方法是:如果Web用户在初始提交之前刷新 由于服务器延迟而完成,导致重复的HTTP POST 请求某些用户代理。
这是在asp.net mvc中将重定向模式与HTTP帖子一起使用时最常见的情况之一。