4

有什么区别:

public ActionResult logOff()
{
    FormsAuth.SignOut();
    return RedirectToAction("index", "Home");
}

和:

public ActionResult logOff()
{
    FormsAuth.SignOut();
    return index();
}
4

2 回答 2

8

是的。

您的用户将RedirectToAction()被重定向到索引页面(这就是他们将在浏览器地址栏上看到的内容)。只需返回您的index()方法的结果,就会用其他页面的内容填充当前页面(LogOff?)。

在这种情况下,可能没有区别,但如果您的操作执行一些逻辑,那么当用户只是刷新页面时您可能会遇到问题。

于 2012-06-19T14:24:40.927 回答
1

看看发布/重定向/获取模式

当通过 HTTP POST 请求将 Web 表单提交给服务器时,Web 用户尝试在某些用户代理中刷新服务器响应可能会导致重新提交原始 HTTP POST 请求的内容,可能会导致不希望的结果,例如重复的网络购买。为了避免这个问题,许多 Web 开发人员使用 PRG 模式1— POST 操作不是直接返回网页,而是返回重定向命令。HTTP 1.1 规范引入了 HTTP 303 响应代码,以确保在这种情况下,Web 用户的浏览器可以安全地刷新服务器响应,而不会导致重新提交初始 HTTP POST 请求。但是,当今使用的大多数常见商业应用程序(新旧都一样)在这些情况下仍会继续发出 HTTP 302 响应。通常避免使用 HTTP 301,因为符合 HTTP-1.1 的浏览器在接收到 HTTP 301 后不会将该方法转换为 GET,这在 HTTP 302 中更常见。 [2] 但是,在不希望将 POST 参数转换为 GET 参数并因此记录在日志中的情况下,可能首选 HTTP 301。PRG 模式无法解决重复表单提交的所有情况。PRG 无法解决的一些已知的重复表单提交是:如果 Web 用户由于服务器滞后而在初始提交完成之前刷新,导致某些用户代理中的重复 HTTP POST 请求。

当重定向模式与 asp.net mvc 中的 HTTP Posts 一起使用时,这也是最常见的情况之一。

于 2012-06-19T14:28:05.750 回答