ASP.NET MVC编程——模型

1 ViewModel正则表达式

是一种专门提供给View使用的模型,使用ViewModel的理由是实体或领域模型所包含的属性比View使用的多或少,这种状况下实体或领域模型不适合View使用。编程

 

2模型绑定数组

默认模型绑定器mvc

经过DefaultModelBinder解析客户端传来的数据,为控制器的操做参数列表赋值。框架

 

显示模型绑定asp.net

使用UpdateModelTryUpdateModel显示绑定模型,不会检验未绑定字段。ide

使用UpdateModel方法绑定模型时,若是绑定失败就会抛异常,而TryUpdateModel不会。ui

 

验证模型绑定成功与否spa

使用ModelState.IsValid.net

 

获取表单数据

为得到表单数据,使用类型为FormCollection的参数做为操做参数。

 

清空模型绑定状态

使用ModelState.Clear();清空模型绑定状态之后,验证失败的信息就不会显示到视图上,即便在视图中使用@Html.ValidationSummary()方法。

 

限制默认的绑定规则

使用BindAttribute属性修饰参数或操做。

public class MyModel { public string Filed1 { set; get; } public string Filed2 { set; get; } } public ActionResult About([Bind(Include = "Filed1")]MyModel mm) { //具体代码
} 或 [Bind(Include = "Filed1")] public ActionResult About(MyModel mm) { //具体代码
}

 

3 模型修饰

在模型属性上使用一些特性,达到修饰模型属性或验证属性的目的

特性名称

描述

备注

StringLength

设置字符串容许的最大长度

 

Required

标记字段为必填字段

 

RegularExpression

必须知足指定的正则表达式

 

Range

规定数字的范围

 

CustomValidation

自定义验证规则

 

DisplayName

设置字段的显示名称

 

Compare

比较两个字段是否一致

可用于确认第二次输入是否与第一次一致

MinLength

设置数组或字符串最小长度

 

MaxLength

设置数组或字符串最大长度

 

Remote

经过控制器操做验证指定字段

public RemoteAttribute(string action, string controller);

例:

1)指定许可的范围

public class ModelF { public string Field { get; set; } [Range(typeof(DateTime), "1/1/2018", "1/1/2019")] public DateTime Field2 { get; set; } }

2)使用占位符

[StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)] public string NewPassword { get; set; }

 

4扩展

自定义注解

建立自定义特性,继承自ValidationAttribute,ValidationAttribute有两个虚方法,能够经过重载这两个虚方法来完成自定义验证逻辑。

public virtual bool IsValid(object value);

protected virtual ValidationResult IsValid(object value, ValidationContext validationContext);

例:

public class CustomValidationAttribute : ValidationAttribute { public CustomValidationAttribute() : base("{0} 验证失败的原因") { } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null) { //验证逻辑 //验证失败,返回错误信息
                string errorMessage = FormatErrorMessage(validationContext.DisplayName); return new ValidationResult(errorMessage); } return ValidationResult.Success; } }

 

5 原理

传入操做的数据存在于HTTP请求的请求URL,消息头,消息体。当操做带有参数时,MVC框架使用模型绑定器(默认的或自定义的)在Http请求中查找数据,用于构建控制器操做的参数列表。

验证发生的时间

模型验证是在操做执行以前完成的。当模型绑定器使用新值对模型属性更新后,会利用当前模型元数据得到模型验证器,模型验证器会找到全部施加于模型属性的特性并执行验证逻辑,而后模型绑定器会捕获全部失败的验证规则,并将它们放入模型状态中。

模型状态

模型状态包含了模型绑按期间绑定的值,和模型绑按期间发生的任何错误。

 

参考:

1.Jess Chadwick/Todd Snyder/Hrusikesh Panda,徐雷/徐扬

译。ASP.NET MVC4 Web编程

2.Jon Galloway/Phil Haack/Brad Wilson/K. Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版)

3.黄保翕,ASP.NET MVC4开发指南

4.蒋金楠,ASP.NET MVC4框架揭秘

5.https://www.asp.net/mvc

 

转载与引用请注明出处。 时间仓促,水平有限,若有不当之处,欢迎指正。
相关文章
相关标签/搜索