ASP MVC:ActionFilter属性 - > RedirectToRouteResult始终重定向到HTTP GET

时间:2011-11-28 15:20:39

标签: asp.net-mvc redirect action-filter

我的控制器顶部有一个ActionFilter属性。

[HandleError]
[MyActionFilter]
public class AccountController : Controller
{
  ...
}

收到某个操作后,我想添加/更改一些路线值,然后重定向到正确的路线。

filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { lang = langName, controller = controllerName, action = actionName, id = idName }));

这很好用。但是,重定向始终设置为HTTP GET,并且由于我的某些操作设置为仅接收HTTP POST,因此失败。

有没有办法让重定向成为HTTP POST?

1 个答案:

答案 0 :(得分:6)

  

有没有办法让重定向成为HTTP POST?

没有。动词GET是HTTP规范中重定向定义的基础。谈论 HTTP重定向和不同于GET的HTTP动词是没有意义的。

您可以直接返回视图,而不是重定向:

var result = new ViewResult
{
    ViewName = "~/Views/Shared/SomeView.cshtml",
};
result.Model = new MyViewModel();
filterContext.Result = result;