ASP.NET MVC: RedirectToAction с параметрами POST-действия - программирование
Подтвердить что ты не робот

ASP.NET MVC: RedirectToAction с параметрами POST-действия

Этот вопрос задан здесь:

RedirectToAction с параметром

Но что, если у меня есть два действия с тем же именем, но с разными параметрами? Как перенаправить действие 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
}
4b9b3361

Ответ 1

Ребята Nevermind, на самом деле я мог бы просто вызвать метод напрямую, а не использовать RedirectToAction следующим образом:

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

Вместо:

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

Ответ 2

Вы правы, что можете вызывать метод напрямую, но я настоятельно рекомендую вам переосмыслить вашу архитектуру/реализацию.

Протокол HTTP охватывает идею безопасных и небезопасных глаголов. Безопасные глаголы, такие как GET, не предполагают каким-либо образом модифицировать состояние сервера, в то время как небезопасные глаголы, такие как POST, PUT, изменяют состояние. Вы, GET, вызываете метод POST, вы нарушаете этот принцип, так как не исключено, что ваш POST будет изменяться.

Также лучшая практика диктует, что вы должны ограничивать глаголы во всех своих действиях, поэтому, если первый метод "Термины" подразумевается как GET, а затем добавьте к нему атрибут HttpGet, чтобы предотвратить другие действия Http от сервера для действия.