我的视图有一个文本框(电子邮件)和一个提交按钮。
@using (Html.BeginForm("FindMyDetail", "ResetPassword", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Enter your email.</h4>
@Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })
@Html.ValidationMessageFor(m=>m.Email)
<div class="form-group">
@Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@*@Html.TextBoxFor(m => m.Email, new { @class = "form-control", @value = @Html.DisplayFor(m => m.Email) })*@
@Html.TextBoxFor(m => m.Email, true, htmlAttributes: new { @class = "form-control", placeholder = "Enter Email Id you used to register" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Email Link" />
</div>
</div>
}
我必须在MVC Web应用的视图中显示多个验证消息。
案例1:显示验证消息以输入textbox空白时输入电子邮件ID。
case2:如果存在电子邮件,请提交按钮会触发邮件。如果邮件失败(false)验证消息不存在电子邮件。单击"提交"按钮,将触发邮件触发给定电子邮件的控制器。如果我将返回带有成功消息的其他视图,否则我将返回相同的视图(emaillink视图)
在ASP.NET WebForms中实现这一目标似乎很容易,但看起来非常不同,并且自从新手以来就在MVC中实现这一点感到困惑。
编辑:我需要使用自定义验证进行实现。
有两种简单的方法可以做到这一点,您可以在客户端或服务器端进行验证。
客户端:
在您的页面中导入此jQuery插件:http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js
和在JavaScript文件上,您可以创建所需的验证,例如:
$(document).ready(function() {
$("#FindMyDetail").validate({
rules: {
Email: {
required: true,
maxlength: 40,
email: true
}
},
messages: {
Email: {
required: "We need your email address to contact you",
email: "Your email address must be in the format of name@domain.com"
}
}
});
});
服务器端
您可以使用ASP.NET框架,并让其验证您的模型。您必须使用一些属性来装饰模型,例如:
public class Person
{
public int ID { get; set; }
[Required]
[StringLength(40)]
public string Email { get; set; }
}
在您的控制器的动作中:
[HttpPost]
public ActionResult Create(Person person)
{
if (ModelState.IsValid)
{
//foo
return RedirectToAction("Index");
}
return View(person);
}