Asp.net mvc 当验证在服务器端且页面加载时带有数据批注时,如何隐藏警报框
我在mvc上创建了一个简单的登录页面,当用户没有输入密码或用户名时,必须通知用户,使用如下数据注释Asp.net mvc 当验证在服务器端且页面加载时带有数据批注时,如何隐藏警报框,asp.net-mvc,alert,data-annotations,Asp.net Mvc,Alert,Data Annotations,我在mvc上创建了一个简单的登录页面,当用户没有输入密码或用户名时,必须通知用户,使用如下数据注释 [Required(ErrorMessage = "password needed")] public string password { get; set; } [Required(ErrorMessage = "user name needed")] public string username{ get; set; } 在控制器中,我使用硬编码值进行测试,如下所示
[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>
用户名
@EditorFor(model=>model.CVR,新{
htmlAttributes=new{@class=“表单输入”,占位符=
“用户名”,maxlength=“10”,Type=“HtmlInputFile”,
id=“username”,value=”“})
@Html.ValidationMessageFor(模型=>
model.username,“,新的{@class=“警报错误”})
p.model.password,
“密码”,new{htmlAttributes=new{@class=“form-
输入“,占位符=“密码”})
@Html.ValidationMessageFor(模型=>
model.password,“,新{@class=“alert error”})
登录
问题在于页面加载时会显示警报框(空)。
单击“提交”按钮但不填写字段后,将显示错误消息。我的问题如下:
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...
}
public ActionResult Login2(LoginViewModel模型,字符串returnUrl)
{
如果(!ModelState.IsValid)
{
返回视图(模型);//m.username,新{@class=”“})
@TextBoxFor(m=>m.username,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.username,“,new{@class=“text danger”})
@LabelFor(m=>m.password,新的{@class=”“})
Html.PasswordFor(m=>m.password,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.password,“,new{@class=“text danger”})
}
有关自定义密码验证规则的信息,请参阅。谢谢您的回答,我会接受它作为答案,但我不确定这一行:(Html.BeginForm(“Login2”,“Account”,FormMethod.Post,new{role=“form”})).我应该如何理解Account和FormMethod.Post在本文中的意思?是一个ASP.NET MVC帮助程序,您可以使用。此帮助程序将为您生成HTML标记…每个表单都有某些属性,如
操作和方法。在上面的示例中,我说该方法应该是Post(您不希望登录时使用GET方法),Login2和Account代表您的操作方法。因此,上面的表单将向/Account/Login2
@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>
}