zoukankan      html  css  js  c++  java
  • Model注解的后台原理

    Asp.net MVC的验证特性是由模型绑定器、模型元数据、模型验证器和模型状态组成的协调系统的一部分。

    1.验证和模型绑定

    默认情况下,Asp.net MVC框架在模型绑定石执行验证逻辑,在操作方法带有参数时,模型绑定将隐式地执行

    [HttpPost]
    Public ActionResult Create(Album album)
    {
          // todo.....  
    }

    也可利用控制器的UpdateModel或TryUpdateModel方法显示的执行模型绑定:

    [HttpPost]
    Public ActionResult Eidt(int id, FormCollection collection)
    {
           Var album = storeDB.Album.Find(id);
           if (TryUpdateModel(album))
           {
               //todo.....
           }
    }

    模型绑定器一旦使用新值完成对模型属性的更新,就会利用当前的模型元数据获得模型的所有验证器。Asp.net MVC运行时提供了一个验证器(DataAnnotationsModelValidator)来与数据注解一同工作。这个模型验证器会找到所有的验证特性并执行塔门包含的验证逻辑。模型绑定器捕获所有失败的验证规则并把它们放入模型状态中。

    2.验证和模型状态

    模型绑定的主要副产品就是模型状态(利用Controller派生类对象的ModelState属性可以访问到)。模型状态不仅包含了用户所有项放入模型属性里的值,也包括与每一个属性相关联的所有错误(还有所有与模型对象本身有关的错误)。如果在模型状态中存在错误,那么ModelState.IsValid就返回Fasle.

    如同运行时自动地向模型状态注入验证错误信息一样,它也能够自动地从模型状态中提取错误信息。

    控制器操作通常需要关心的问题是:模型状态是否有效?

  • 相关阅读:
    boost之实用工具
    boost之内存池
    boost之智能指针
    boost之日期date_time
    boost之时间timer
    boost之网络通信
    boost之定时器和io_service
    【Linux 线程】线程同步《一》
    【Linux 线程】常用线程函数复习《四》
    【Linux 线程】常用线程函数复习《三》
  • 原文地址:https://www.cnblogs.com/lc-ant/p/3905313.html
Copyright © 2011-2022 走看看