25

この質問はここで尋ねられました:

パラメータ付きの RedirectToAction

しかし、名前が同じでパラメーターが異なる 2 つのアクションがある場合はどうなるでしょうか。TermsGET アクションではなくPOST アクションにリダイレクトするにはどうすればよいですかTerms

public ActionResult Terms() {
    //get method
}

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

2 に答える 2

60

気にしないでください、実際には、次のRedirectToActionように使用する代わりに、メソッドを直接呼び出すことができます。

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

それ以外の:

return RedirectToAction("Terms", {month, year, deposit, total});
于 2013-05-20T06:11:08.423 に答える
8

メソッドを直接呼び出すことができるのは正しいですが、アーキテクチャ/実装を再考することを強くお勧めします。

HTTP プロトコルは、安全な動詞と安全でない動詞の概念を取り入れています。GET などの安全な動詞は、サーバーの状態を変更することは想定されていませんが、POST、PUT などの安全でない動詞は状態を変更します。POST メソッドを GET で呼び出すと、POST が状態を変更することは考えられないため、この原則に違反しています。

また、ベスト プラクティスでは、すべてのアクションで動詞を制限する必要があるため、最初の 'Terms' メソッドが GET を意味する場合は、それに HttpGet 属性を追加して、他の Http アクションがサーバーによって受け入れられないようにします。 .

于 2015-01-31T07:15:30.393 に答える