这里已经提出了这个问题:
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
}
发布于 2013-05-20 14:11:08
不要紧,实际上我可以直接调用这个方法,而不是像这样使用RedirectToAction
:
return Terms(month, year, deposit, total);
而不是:
return RedirectToAction("Terms", {month, year, deposit, total});
发布于 2015-01-31 15:15:30
您可以直接调用该方法,这是正确的,但我强烈建议您重新考虑您的体系结构/实现。
HTTP协议包含了安全和不安全动词的概念。GET这样的安全动词不会以任何方式修改服务器的状态,而POST、PUT、do等不安全动词则会修改状态。通过调用POST方法,您违反了这一原则,因为您的POST将处于修改状态并非不可想象。
此外,最佳实践规定,您应该限制所有操作的谓词,因此,如果第一个“Terms”方法是GET,则还应向其添加HttpGet属性,以防止服务器接受该操作的其他Http操作。
https://stackoverflow.com/questions/16643414
复制相似问题