web-dev-qa-db-ja.com

GETおよびPOST= ASP.NET MVCの同じコントローラーアクションに

GetsとPostsの両方に単一のアクションを応答させたいのですが。私は次を試しました

[HttpGet]
[HttpPost]
public ActionResult SignIn()

それはうまくいかないようでした。助言がありますか ?

86
Cranialsurge

これはAcceptVerbs属性を使用して可能です。少し冗長ですが、より柔軟です。

[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult SignIn()
{
}

msdn の詳細。

128
Ryan Bair

アクションはデフォルトでGETとPOSTの両方に応答するため、何も指定する必要はありません。

public ActionResult SignIn()
{
    //how'd we get here?
    string method = HttpContext.Request.HttpMethod;
    return View();
}

必要に応じて、HttpContext.Request.HttpMethod値を操作することにより、HttpMethodに応じて異なるロジックを実行できます。

63
Kurt Schindler
[HttpGet]
public ActionResult SignIn()
{
}

[HttpPost]
public ActionResult SignIn(FormCollection form)
{
}
1
Neil Outler