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


相关推荐
空空kkk15 小时前
Spring、Spring MVC、SpringBoot的欢迎页配置
spring boot·spring·mvc
yangminlei15 小时前
Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置
spring·json·mvc
哪里不会点哪里.2 天前
Spring MVC 核心原理解析:从请求到响应到底发生了什么?
java·spring·mvc
哪里不会点哪里.2 天前
Spring MVC Restful 风格的接口流程是什么样的呢?
spring·mvc·restful
那我掉的头发算什么2 天前
【Spring】从0到1掌握Spring MVC应用分层
java·后端·spring·mvc
马猴烧酒.2 天前
智能协图云图库学习笔记day5
java·jvm·spring boot·笔记·学习·mvc
哪里不会点哪里.3 天前
Spring MVC 四种核心传参形式详解
java·spring·mvc
那我掉的头发算什么4 天前
【Spring MVC】手动做出小网页的最后一步——学会SpringMVC响应
java·服务器·后端·spring·mvc
xiaolyuh1235 天前
Spring MVC 深度解析
java·spring·mvc
派大鑫wink6 天前
【Day42】SpringMVC 入门:DispatcherServlet 与请求映射
java·开发语言·mvc