ASP.NET没有魔法——ASP.NET MVC 模型绑定 (2)

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

ASP.NET MVC模型绑定简介

  ASP.NET MVC的模型绑定功能的作用是将Http请求中的数据映射到MVC的Action方法的参数上,上面介绍的内容就是利用MVC的模型绑定功能,将在HTML表单中填写的数据映射到Insert方法的PostMaintainViewModel类型参数上。

  Action的参数一般为.Net的基本类型(int、float、char等)或者是自定义类型,除此之外还有基于这两种类型的数组、字典等。

  而在ASP.NET MVC中一般通过queryString、FormData、RouteData等将数据提交到服务器,然后再根据一些特殊的规则完成数据的识别与绑定。下面将通过一系列的Demo来介绍不同数据源以及不同参数类型是如何绑定的。

ASP.NET MVC模型绑定方式 基本类型

  1、 Query String:通过queryString的变量名称与action的变量名称匹配:

  url::52356/ModelBinderTest/demo1?field=test111

  执行结果:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

 

  2、FormData:在Html的Form中包含与action参数名匹配的的input标签:

  url::52356/ModelBinderTest/demo2

  页面代码和效果:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

   

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  执行结果(点击提交按钮):

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  3、RouteData :在路由相关章节中介绍过,通过路由模板可以定义一些变量,当匹配到这些变量后会将其存放在RouteData中:

  url::52356/ModelBinderTest/demo3/hello

  路由配置:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  执行结果:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  ASP.NET MVC基本类型的绑定无论是从Query String、FormData还是RouteData,都是根据名称来匹配的,如果上面的demo修改了参数名称,那么将无法获得数据。除了基类类型其它的自定义类型、数组等都是以名称匹配为主要手段,并且它们都是以Query String、Form Data以及Route Data为主要数据源,下面对自定义及数组等类型分析时将只通过Query String来作为数据源。

自定义类型

  下图是该自定义类型的定义,只有两个字符串类型的属性:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  1、通过属性名匹配对象字段名称:

  url::52356/ModelBinderTest/Demo4?field1=test123&field2=111111
  执行结果:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  2、通过以参数名称为前缀匹配:  

  url::52356/ModelBinderTest/Demo4?obj.field1=test123&obj.field2=111111
  执行结果:

  

ASP.NET没有魔法——ASP.NET MVC 模型绑定

  3、通过参数名称为前缀区分不同对象: 

  url::52356/ModelBinderTest/Demo4?obj.field1=test123&obj.field2=111111&obj1.field1=hello&obj1.field2=world
  执行结果:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxxdp.html