何らかの理由でGetとPostの両方が最初のアクションを実行します。MVC HttpPost属性が機能しない
public ActionResult Login()
{
return View();
}
[HttpPost]
public ActionResult Login(FormCollection form)
{
// Login Stuff here... never gets reached!
}
私は基本的にこれをMVCミュージックストアサンプルから直接コピーしました。別のアプリで試してみるとうまくいきました。
これはかなり新しいプロジェクトで、Visual Studioの基本MVC3プロジェクトテンプレートをすべてデフォルト設定にしました。
私は、HTML出力は、POSTメソッドを指定することを確認しました:
:私は私のブラウザで次のURLを参照してくださいフォームを送信した後ここで<form action="/Home/Login" method="post">
は私Login.cshtml
@{
ViewBag.PageTitle = "Login";
}
<section id="index">
<header>
<h2>Login</h2>
</header>
<content>
@using (Html.BeginForm("Login", "Home", FormMethod.Post))
{
<panel id="login">
<table>
<tr>
<td>Email:</td>
<td><input name="Email" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="Password" type="password" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Login" /></td>
</tr>
</table>
</panel>
}
</content>
</section>
です
http://localhost:51606/Home/[email protected]&Password=mypass
これらのフィールドはURL内にあってはなりません!なぜ私のフォームがGETリクエストに変換されるのですか?
私はあなたのコードをコピーしましたが、うまくいきました。申し訳ありませんが、私は何を提案するか分からない!たぶん...正しいビューが使用されていることを確認しますか? – Beno
@ベノ:下記の私の答えを見てください。私はHTMLの出力全体を最初に見ていたはずです。 –