ログイン ボタンをクリックしても、モデルがサーバーに投稿されません。ただし、FormCollection を受け入れると、値が表示されます。フォーム コレクションを検索する代わりに、これをモデルに自動的にバインドするにはどうすればよいですか?
私が読んだことから、これにはいくつかの一般的な問題があります:
1 - あなたのビューはあなたが使用しているモデルを指定していません (@model myApp.Models.name)
2 - あなたのモデルはプロパティを使用していません
3 - 必須フィールドのいずれか行方不明
コントローラ
[HttpGet]
public ActionResult Password()
{
return View(new AuthViewModel());
}
[HttpPost]
public ActionResult Password(AuthViewModel password)
{
if (password == null || string.IsNullOrEmpty(password.Password))
{
ViewBag.Error = Constants.ErrorMessages.UserPassword_PassBlank;
return View(new AuthViewModel());
}
//success
return Redirect("/");
}
モデル
public class AuthViewModel
{
public string Password { get; set; }
}
意見
@model MvcApplication1.Models.AuthViewModel
@{
ViewBag.Title = "Password";
}
<h2>Password</h2>
@using (Html.BeginForm())
{
<div>@Html.TextBoxFor(m => m.Password,new{placeholder="Password",type="password",autofocus=""})</div>
<div><button id="btnLogin" type="submit">Login</button></div>
<div class="error">@ViewBag.Error</div>
}