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");
}


相关推荐
王ASC6 小时前
SpringMVC的URL组成,以及URI中对/斜杠的处理,解决IllegalStateException: Ambiguous mapping
java·mvc·springboot·web
撒呼呼6 小时前
# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
数据库·spring boot·spring·mvc·springboot
zybishe1 天前
免费送源码:Java+ssm++MVC+HTML+CSS+MySQL springboot 社区医院信息管理系统的设计与实现 计算机毕业设计原创定制
java·hadoop·sql·zookeeper·html·json·mvc
nie66688882 天前
springmvc的拦截器,全局异常处理和文件上传
spring·mvc
王ASC2 天前
Springboot访问到Controller中不存在的接口BUG
spring boot·后端·mvc
de之梦-御风3 天前
【进阶编程】MVVM的物理架构目录
架构·mvc·.net
m0_748247803 天前
WebMvcConfigurer和WebMvcConfigurationSupport(MVC配置)
mvc
喵小狸3 天前
Spring MVC 中,处理异常的 6种方式
python·spring·mvc
小鹿撞出了脑震荡4 天前
「iOS」通过CoreLocation Framework深入了解MVC架构
ios·架构·mvc
V+zmm101345 天前
基于微信小程序的小区疫情防控ssm+论文源码调试讲解
java·小程序·毕业设计·mvc·ssm