ASP.NET MVC:如何使用BindAttribute来定制Model绑定的Properties?
来源:互联网 发布:淘宝第三方免费活动 编辑:程序博客网 时间:2024/04/29 18:03
环境:
Windows 2008, VS 2008 SP1, Asp.Net Mvc RC1
------------------------------------------------------------------------------
前文我们讲述了如何实现自定义的ModelBinder,本文继续研究如何使用BindAttribute来定制Model绑定的Properties.
我们再次上一篇文章提到的Book类,BookController.Create Action,以及Create的View
Book类:
Create Action:
对应的View:
请注意,这里我们没有应用前一篇文章讲述的自定义ModelBinder。现在,当我们提交表单的时候,在Create的Action中,我们可以得到一个Book实例,这个实例的BookName, Author, PublishedDate均已如所期望的得到相应的表单的值。
好,现在,由于某些原因,有可能是安全性的考虑等等,我希望在Action中,仅自定绑定可靠的来自表单的值,也就是说,我希望对Model自定绑定的Property做过滤。
在Asp.Net Mvc中,BindAttribute充当了这样的角色。
BindAttribute中有三个重要的成员:string Exclude, string Include, string Prefix。
"Exclude"用于指定要排除的Property,"Include"用于指定包含在内的Property,"Prefix"用于指定前缀。
先说,"Prefix"吧,默认情况下,DefaultModelBinder可以自动识别以Action的参数名命名的前缀,也就是说,在上述View中,给每个TextBox的名称都加一个"book“前缀,不需要在做任何改动,在Action中仍可得到Book的实例。
加上前缀”book"的View:
这时,如果我们加的前缀不是"book",那么就需要BindAttribute的协助了,
假设,我们加上一个"b"的前缀:
那么,为了在Action中得到相应的Book实例,需要在Action的Book参数上应用BindAttribute:
现在来看"Exclude"和"Include",其实这两个东西一次应用一个就可以了。现在我希望Binding的时候将"BookName"和"Author"都排除(当然,这里这样做没什么意义)。出于简化问题的考虑,View去掉TextBox名称的前缀:
然后,将Action改为:
默认情况下,多个Property用逗号隔开。
BindAttribute出了可以应用在Action的参数上外,还可以应用在Model类定义中:
如果在Model类定义中,和在Action的参数上都应用了BindAttribute,那么则会取两者的交集。个人认为,还是应尽量避免它们打架为妙。
好了,BindAttribute就讲到这,本来要结合BindAttribute继续改进上一篇文章的SimpleModelBinder,还是留待下一篇文章吧。
- ASP.NET MVC:如何使用BindAttribute来定制Model绑定的Properties?
- Asp.Net Mvc: 应用BindAttribute
- ASP.NET MVC Model绑定的简单应用
- ASP.NET MVC Model绑定(一)
- ASP.NET MVC Model绑定(二)
- ASP.NET MVC Model绑定(三)
- ASP.NET MVC Model绑定(四)
- ASP.NET MVC Model绑定(五)
- ASP.NET MVC Model绑定(六)
- ASP.NET MVC Model绑定(一)
- asp.net mvc Dropdownlist的使用绑定
- ASP.NET MVC Model Binding(模型绑定)
- 定制ASP.Net MVC的代码模板
- Asp.net MVC Model Binding
- asp.net mvc model 汇总
- ASP.NET MVC - Model Binding
- ASP.NET MVC Model Binding
- asp.net MVC中的@model与Model
- 一个C内存分配问题
- 设计模式学习---Builder(构造器)
- Ubuntu中pdf乱码问题解决方法
- 汗
- coreldraw高级快捷键技巧
- ASP.NET MVC:如何使用BindAttribute来定制Model绑定的Properties?
- Java工程打成可执行JAR包 AND 用批处理文件执行JAR包
- 【寻求】关于C#映射动态生成类方面的资料(不是数据库映射生成类)
- 基于单片机的十字路口交通灯控制系统
- sigslot简介和应用
- CSDN总裁蒋涛:从软件技术高手到百万富翁的三条捷径
- WinCE系统 USB Serial实现
- maven
- linux下的tar打包命令示例及详解