ASP.NET MVC编程——模型

1 ViewModel

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

2模型绑定

默认模型绑定器

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

 

显示模型绑定

使用UpdateModel和TryUpdateModel显示绑定模型,不会检验未绑定字段。

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

验证模型绑定成功与否

使用ModelState.IsValid

获取表单数据

为获得表单数据,使用类型为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

-----------------------------------------------------------------------------------------

转载与引用请注明出处。

时间仓促,水平有限,如有不当之处,欢迎指正。

原文地址:https://www.cnblogs.com/hdwgxz/p/8639644.html

时间: 2024-10-06 10:28:39

ASP.NET MVC编程——模型的相关文章

理解ASP.NET中MVC 编程模型 上

MVC 编程模型 MVC 是 ASP.NET 开发模型之一. MVC 是用于构建 web 应用程序的一种框架,使用 MVC (Model View Controller) 设计: Model(模型)表示应用程序核心(比如数据库记录列表) View(视图)对数据(数据库记录)进行显示 Controller(控制器)处理输入(写入数据库记录) MVC 模型同时提供对 HTML.CSS 以及 JavaScript 的完整控制. MVC 模型通过三个逻辑层来定义 web 应用程序: business l

ASP.NET MVC 编程参考

ASP.NET MVC 编程参考 转载请注明出处:http://surfsky.cnblogs.com MVC    参考 http://msdn.microsoft.com/zh-cn/dd408813.aspx    MVC 的基本思想        ·Module      : 模型.可以看做实体类,可用各种技术实现,例如Microsoft Entity Framework.NHibernate等        ·View        : 视图.可以与某个实体类关联,此时视图则负责展示该

MVC 编程模型及其变种

MVC 编程模型及其变种 MVC全称是Model View Controller, 这是一个模型(model)-查看(view)-调节器(controller)缩写,这是通过通用的编程模型非.MVC当为了分离数据和视图首次提出,数据和实体之间的关系.这就是关注点分离的设计理念,也是单一职责原则(Single-Resposibility Principle). 在我们的开发过程中, 视图用来展现界面, 我们的模型处理业务, 持有数据, 而控制器是他们之间的中间人. GoF四人组觉得MVC是"一组用

ASP.NET MVC数组模型绑定

在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type="text" name="[0].Name" /> <input type="text" name="[1].Name" /> <input type="text" name="[2].Name" />

理解ASP.NET中MVC 编程模型 第5章 引用参考

类 类 说明 AcceptVerbsAttribute 表示一个特性,该特性指定操作方法将响应的 HTTP 谓词. ActionDescriptor 提供有关操作方法的信息,如操作方法的名称.控制器.参数.特性和筛选器. ActionExecutedContext 提供 ActionFilterAttribute 类的 ActionExecuted 方法的上下文. ActionExecutingContext 提供 ActionFilterAttribute 类的 ActionExecuting

理解ASP.NET中MVC 编程模型 第3章 数据模型

MVC 模型 MVC 模型包含所有应用程序逻辑(业务逻辑.验证逻辑.数据访问逻辑),除了纯视图和控制器逻辑.通过 MVC,模型可保存并操作应用程序数据. Models 文件夹 Models 文件夹包含表示应用程序模型的类. 以登录验证为例,创建一个 AccountModels.cs 文件,用于应用程序安全的模型. AccountModels 包含 LogOnModel.ChangePasswordModel 以及 RegisterModel. LogOnModel: public class L

ASP.NET MVC编程——错误处理与日记

ASP.NET MVC的错误处理应考虑到这几个方面:模型绑定期间发生的错误,未能路由到指定操作,针对控制器的错误处理.使用配置文件可以帮助我们处理异常,但是不够灵活和全面:使用HandleErrorAttribute.自定义错误过滤器或重写控制器OnException方法只能解决针对控制器的错误,无法解决模型绑定期间发生的错误,也无法处理404错误,即使将错误过滤器注册为全局过滤器也是如此.有时候需要多种方法配合使用. 在捕获错误的地方,可以将有用的信息记录下来,便于我们查出引起问题的原因和纠正

ASP.NET MVC编程——单元测试

1自动化测试基本概念 自动化测试分为:单元测试,集成测试,验收测试. 单元测试 检验被测单元的功能,被测单元一般为低级别的组件,如一个类或类方法. 单元测试要满足四个条件:自治的,可重复的,独立的,快速的. 自治的是指:关注于验证某个单一功能,例如只关注于类的某个方法的功能. 可重复的是指:无论何时允许同一段测试代码都应该得到相同的结果. 独立的是指:不依赖与其他任何系统或单元测试. 快速的是指:所有测试都应快速地完成,   集成测试 验证两个或多个组件之间的交互. 验收测试 确保已构建的系统实

ASP.NET MVC编程入门--Excel上传

参考博客:ASP.NET MVC下使用文件上传 参考博客:NPOI使用手册 参考博客:ASP.Net MVC利用NPOI导入导出Excel 参考博客:C# NPOI 导入与导出Excel文档 兼容xlsx, xls 文件上传代码块 #region EXCEL上传 /// <summary> /// EXCEL上传 /// </summary> /// <param name="fileData"></param> /// <retu