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

  

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

   

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

  对于简单的自定义类型来说,它可以直接使用参数对象的属性名称来匹配,或者通过参数名称作为前缀来指定,避免有多个参数对象存在属性同名。

数组

  1、通过同名参数来绑定数组,其元素顺序按照参数顺序来决定:

  url::52356/ModelBinderTest/demo5?fields=test111&fields=test222
  执行结果:

   

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

  2、通过添加数组索引来绑定数组,元素顺序与索引一致:

  url::52356/ModelBinderTest/demo5?fields[1]=test111&fields[0]=test222
  执行结果(注:绑定后的元素顺序与参数下标一致):

  

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

  3、仅通过索引来绑定数组:

  url::52356/ModelBinderTest/demo5?[1]=tes333&[0]=test222
  执行结果(注:绑定后的元素顺序与参数下标一致):

  

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

简单对象数组

  1、通过参数名及数组索引作为前缀来匹配参数中的属性:

  url::52356/ModelBinderTest/Demo6?objs[0].field1=test123&objs[0].field2=111111&objs[1].field1=hello&objs[1].field2=world
  执行结果:

  

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

  2、仅通过索引作为前缀来匹配参数中的属性:

  url::52356/ModelBinderTest/Demo6?[1].field1=test123&[1].field2=111111&[0].field1=hello&[0].field2=world
  执行结果(注意顺序):

  

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

 

自定义类型字典

  1、通过参数名称及其索引为前缀,Key、Value来分别关联字典中相应的值:

  url::52356/ModelBinderTest/Demo7?objs[0].Key=1&objs[0].Value.field1=hello&objs[0].Value.field2=world
  执行结果:

  

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

  2、仅使用索引为前缀,Key、Value来分别关联字典中相应的值:

  url::52356/ModelBinderTest/Demo7?[0].Key=1&[0].Value.field1=hello&[0].Value.field2=world&[1].Key=2&[1].Value.field1=hello1&[1].Value.field2=world1
  执行结果:

  

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

包含数组的自定义类型

  

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

  通过参数名称、属性名称、索引来完成绑定:

  url::52356/ModelBinderTest/Demo8?obj.field1=hello&obj.field2=world&obj.simplyobjects[0].field1=hello1&obj.simplyobjects[0].field2=world1
  执行结果:

   

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

多种数据源的数据获取

  上面的例子均是以QueryString做为数据源来绑定数据,但是也提到过数据源除此之外还有FormData和RouteData,所以如果一个对象的数据分别位于多个数据源中,是否能够正常绑定呢?现在以绑定一个简单自定义对象为例,使用QueryString和RouteData为数据源查看对象的绑定结果:
  url::52356/ModelBinderTest/Demo9/1/test123/?field2=111111
  路由:

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

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