2

これは私のモデルです:

public class LoginModel {
    public string username { get; set; }
    public string password { get; set; }
    public string ReturnUrl { get; set; }
}

これは私のコントローラーヘッダーです:

    [AllowAnonymous]
    public ActionResult Login(
        LoginModel model
    )

これは私の見解です:

 <form action="@Url.Action("Login", "Login")" method="GET">
        @Html.HiddenFor(m=>m.ReturnUrl)
        User name: @Html.TextBoxFor(f=>f.username)
        <br />
        Password: @Html.PasswordFor(f=>f.password)
        <br /><br />
        <button type="submit">Login</button>
    </form>

フォームのメソッドを「GET」から「POST」に変更すると、バインディングが機能しません。追加しようとしました:

[AcceptVerbs("POST", "GET")]

コントローラーヘッダーに、それは役に立ちません

4

2 に答える 2

3

注意しActionResult Loginてください、あなたのコントローラーではありません...それはあなたのアクションです。これをアクションのヘッダーに追加してください:

[HttpPost] 
public ActionResult Login(LoginModel model)
{
  // your code
  return View("NameofView"); //**UPDATE
}

そしてあなたのフォーム:

method="POST"

アップデート*

return 句でビューの名前を明示的に設定できることを確認してください。また、POST が Login Action を呼び出している場合は、フォーム定義内の action 属性に明示的に配置したためです。

<form action="<Here_your_action>" method="POST">

GET と POST の両方の「アクション」を実行する場合は、この定義に一致するように 2 つのフォームをコーディングする必要があります。

于 2013-04-29T12:56:33.977 に答える