如何在页面加载时使用数据注释在服务器端进行验证时隐藏警告框
How to hide alert box when validation is on server side with Data Annotation on page load
我在 mvc 上创建了一个简单的登录页面,当用户没有输入密码或用户名时必须通知用户,使用数据注释如下。
[Required(ErrorMessage = "password needed")]
public string password { get; set; }
[Required(ErrorMessage = "user name needed")]
public string username{ get; set; }
在控制器中,我正在使用如下硬编码值进行测试:
public ActionResult Login2(Login login)
{
string username = login.username;
string password = login.password;
if (ModelState.IsValid)
{
if (username == "100000" && password == "password")
{
return RedirectToAction("Index", "Home");
}
else{
return View();
}
}
return View();
在viwe中,我通过如下验证信息进行验证:
<label class="form-label" for="contactPhone">
username
</label>
@Html.EditorFor(model => model.CVR, new {
htmlAttributes = new { @class = "form-input", PlaceHolder =
"username", maxlength = "10", Type="HtmlInputFile",
id="username" , value=""} })
<br>
@Html.ValidationMessageFor(model =>
model.username, "", new { @class = "alert alert-error" })
<label class="form-label" for="contactPhone">
p<ssword
</label>
@Html.EditorFor(model => model.password,
"Password", new { htmlAttributes = new { @class = "form-
input", PlaceHolder = "password" } })
<br>
@Html.ValidationMessageFor(model =>
model.password, "", new { @class = "alert alert-error" })
<button class="button button-primary button-active"
id="danger" type="submit">Login</button>
问题是警告框显示在页面加载(空)上。
一旦提交按钮未填写字段,就会显示错误消息。我的问题如下:
1-加载登录页面时如何隐藏红色警告框?
2- 如何为验证用户名和密码添加更多限制。例如:
- 如何验证正确的密码?并在警告框中显示错误消息?
- 如何验证正确的用户名?并在警告框中显示错误?
在 MVC 中执行此操作的标准方法是将所有验证添加到模型中:
public class LoginViewModel
{
[Required(ErrorMessage = "password needed")]
public string Email { get; set; }
[Required(ErrorMessage = "user name needed")]
public string Password { get; set; }
}
然后在您的控制器中,您将检查模型是否有效:
public ActionResult Login2(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model); // <-- return invalid model to the same view (Login2) so user can fix it
}
// code for valid model...
}
并在视图中显示错误消息,如:
@using (Html.BeginForm("Login2", "Account", FormMethod.Post, new { role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form login-form">
<div class="form-group">
@Html.LabelFor(m => m.username, new { @class = "" })
@Html.TextBoxFor(m => m.username, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.username, "", new { @class = "text-danger" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.password, new { @class = "" })
Html.PasswordFor(m => m.password, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.password, "", new { @class = "text-danger" })
</div>
</div>
}
有关自定义密码验证规则的信息,请参阅 。
我在 mvc 上创建了一个简单的登录页面,当用户没有输入密码或用户名时必须通知用户,使用数据注释如下。
[Required(ErrorMessage = "password needed")]
public string password { get; set; }
[Required(ErrorMessage = "user name needed")]
public string username{ get; set; }
在控制器中,我正在使用如下硬编码值进行测试:
public ActionResult Login2(Login login)
{
string username = login.username;
string password = login.password;
if (ModelState.IsValid)
{
if (username == "100000" && password == "password")
{
return RedirectToAction("Index", "Home");
}
else{
return View();
}
}
return View();
在viwe中,我通过如下验证信息进行验证:
<label class="form-label" for="contactPhone">
username
</label>
@Html.EditorFor(model => model.CVR, new {
htmlAttributes = new { @class = "form-input", PlaceHolder =
"username", maxlength = "10", Type="HtmlInputFile",
id="username" , value=""} })
<br>
@Html.ValidationMessageFor(model =>
model.username, "", new { @class = "alert alert-error" })
<label class="form-label" for="contactPhone">
p<ssword
</label>
@Html.EditorFor(model => model.password,
"Password", new { htmlAttributes = new { @class = "form-
input", PlaceHolder = "password" } })
<br>
@Html.ValidationMessageFor(model =>
model.password, "", new { @class = "alert alert-error" })
<button class="button button-primary button-active"
id="danger" type="submit">Login</button>
问题是警告框显示在页面加载(空)上。 一旦提交按钮未填写字段,就会显示错误消息。我的问题如下: 1-加载登录页面时如何隐藏红色警告框? 2- 如何为验证用户名和密码添加更多限制。例如:
- 如何验证正确的密码?并在警告框中显示错误消息?
- 如何验证正确的用户名?并在警告框中显示错误?
在 MVC 中执行此操作的标准方法是将所有验证添加到模型中:
public class LoginViewModel
{
[Required(ErrorMessage = "password needed")]
public string Email { get; set; }
[Required(ErrorMessage = "user name needed")]
public string Password { get; set; }
}
然后在您的控制器中,您将检查模型是否有效:
public ActionResult Login2(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model); // <-- return invalid model to the same view (Login2) so user can fix it
}
// code for valid model...
}
并在视图中显示错误消息,如:
@using (Html.BeginForm("Login2", "Account", FormMethod.Post, new { role = "form" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form login-form">
<div class="form-group">
@Html.LabelFor(m => m.username, new { @class = "" })
@Html.TextBoxFor(m => m.username, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.username, "", new { @class = "text-danger" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.password, new { @class = "" })
Html.PasswordFor(m => m.password, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.password, "", new { @class = "text-danger" })
</div>
</div>
}
有关自定义密码验证规则的信息,请参阅