ASP.NET MVC:带有POST Action参数的RedirectToAction

时间:2013-05-20 05:59:36

标签: asp.net-mvc asp.net-mvc-4

此问题已在此处提出:

RedirectToAction with parameter

但是,如果我有两个具有相同名称但参数不同的动作怎么办?如何重定向到POST Terms操作,而不是GET Terms操作。

public ActionResult Terms() {
    //get method
}

[HttpPost]
public ActionResult Terms(string month, string year, int deposit = 0, int total = 0) {
    //process POST request
}

2 个答案:

答案 0 :(得分:47)

没关系,实际上我可以直接调用方法而不是像RedirectToAction一样使用{/ p>

return Terms(month, year, deposit, total);

而不是:

return RedirectToAction("Terms", {month, year, deposit, total});

答案 1 :(得分:5)

您可以直接调用该方法,但我强烈建议您重新考虑您的体系结构/实现。

HTTP协议包含安全和不安全动词的概念。像GET这样的安全动词不会以任何方式修改服务器的状态,而像POST,PUT这样的不安全动词会修改状态。通过你GET调用POST方法你违反了这个原则,因为你的POST将要修改状态是不可想象的。

另外,最佳做法是规定您应该限制所有动作的动词,以便第一个条款可以使用。方法意味着作为GET,然后还向其添加HttpGet属性,以防止服务器接受其他Http操作以进行操作。