ユーザーがログインすると、通常はパスワードを戻さないようにします。私はMVC 5でこれを試しているし、それを実現させることはできません。私はModelState.Clear()
と同様にmodel.PASSWORD = ""
を試しましたが、データはまだ表示されています。ModelStateはクリアされていますが、データはまだ表示されます
コントローラー:
public async Task<ActionResult> Login(Login model) {
if(ModelState.IsValid) {
User temp = await db.Users.Where(u => u.USERNAME == model.USERNAME).FirstOrDefaultAsync();
if(temp != null) {
try {
if(Password.VerifyPass(model.PASSWORD, temp.PASSWORD)) {
LoginUser(temp);
return RedirectToAction("Index", "EMR");
}
} catch { }
}
}
ModelState.Clear();
model.PASSWORD = "";
ModelState.AddModelError("", "Username/password is unknown, or model was invalid!");
return View();
}
モデル:
public class Login {
[Display(Name = "Username")]
public string USERNAME { get; set; }
[Display(Name = "Password")]
public string PASSWORD { get; set; }
}
}
ビュー:にModelState変数とVisualStudioをデバッグモードでモデル変数の両方を見ていたら
@using(Html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.USERNAME, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.USERNAME, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.USERNAME, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.PASSWORD, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.PASSWORD, new { htmlAttributes = new { @class = "form-control", @type = "password" } })
@Html.ValidationMessageFor(model => model.PASSWORD, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-success" />
</div>
</div>
</div>
}
、彼らは両方ショーデータは""
となります。おそらく何が原因でしょうか?
ビューコードはどのように見えますか?ビューモデルはどのように見えますか? – Shyju
私はそこに何か不足していました。編集 –
おそらく私は何かが明らかではないが、あなたが@ Html.EditorFor()を@ Html.PasswordFor()で使用している理由は何ですか? –