MVC之 Controller 》》 ModelState ValidationMessageFor ValidationSummary

ModelState是Controller的一个属性,可以被继承自System.Web.Mvc.Controller的那些类访问。它表示在一次POST 提交中被提交到服务器的 键值对集合,每个记录到ModelState内的值都有一个错误信息集。尽管ModelState的名字中含有"Model",但它只有名称、值和错误集,与任何Model类都没有关系。

》》 ModelState有两个作用:

1:存储提交到服务器的值,

2:存储与之相关联的验证错误集。


ModelState 中错误集合,是记录 Model中特性标识,Require、StringLength、EmailAddress等

csharp 复制代码
public class XXXModel
{
    [Required(ErrorMessage = "Please enter the user's first name.")]
    [StringLength(50, ErrorMessage = "The First Name must be less than {1} characters.")]
    [Display(Name = "First Name:")]
    public string FirstName { get; set; }

    [Required(ErrorMessage = "Please enter the user's last name.")]
    [StringLength(50, ErrorMessage = "The Last Name must be less than {1} characters.")]
    [Display(Name = "Last Name:")]
    public string LastName { get; set; }

    [EmailAddress(ErrorMessage = "The Email Address is not valid")]
    [Required(ErrorMessage = "Please enter an email address.")]
    [Display(Name = "Email Address:")]
    public string EmailAddress { get; set; }
}

同时要在csHTML 中 @Html.ValidationMessageFor()

》》请注意我们现在使用的两个帮助信息控件 ValidationSummary 和 ValidationMessageFor。

》》ValidationMessageFor则只显示其指定属性的错误信息摘要。

》》ValidationSummary控件将会读取模型中所有属性的错误信息摘要并显示在一个项目符号列表中;

html 复制代码
@model ModelStateDemo.ViewModels.Home.xxxModel

<h2>Add</h2>

@using(Html.BeginForm())
{
    @Html.ValidationSummary()
    <div>
        <div>
            @Html.LabelFor(x => x.FirstName)
            @Html.TextBoxFor(x => x.FirstName)
            @Html.ValidationMessageFor(x => x.FirstName)
        </div>
        <div>
            @Html.LabelFor(x => x.LastName)
            @Html.TextBoxFor(x => x.LastName)
            @Html.ValidationMessageFor(x => x.LastName)
        </div>
        <div>
            @Html.LabelFor(x => x.EmailAddress)
            @Html.TextBoxFor(x => x.EmailAddress)
            @Html.ValidationMessageFor(x => x.EmailAddress)
        </div>
        <div>
            <input type="submit" value="Save" />
        </div>
    </div>
}

ModelState 自定义错误

csharp 复制代码
[HttpPost]
public ActionResult Add(AddUserVM model)
{
    if(model.FirstName == model.LastName)
    {
        ModelState.AddModelError("LastName", "The last name cannot be the same as the first name.");
    }
    if(!ModelState.IsValid)
    {
        return View(model);
    }
    return RedirectToAction("Index");
}


相关推荐
Cloud-Future3 天前
Spring MVC 处理请求的流程
java·spring·mvc
optimistic_chen5 天前
【Java EE进阶 --- SpringBoot】Spring IoC
spring boot·后端·spring·java-ee·mvc·loc
wuk9985 天前
在Spring MVC中使用查询字符串与参数
java·spring·mvc
原来是好奇心6 天前
深入剖析Spring Boot中Spring MVC的请求处理流程
spring boot·spring·mvc
xkroy6 天前
创建Spring MVC和注解
学习·spring·mvc
期待のcode6 天前
SpringMVC的请求接收与结果响应
java·后端·spring·mvc
Pure03197 天前
Spring MVC BOOT 中体现的设计模式
spring·设计模式·mvc
The Sheep 20237 天前
.NetCore MVC
mvc·.netcore
YDS8297 天前
SpringMVC —— Spring集成web环境和SpringMVC快速入门
java·spring·mvc·springmvc
xkroy7 天前
Sping Web MVC入门
mvc