码迷,mamicode.com
首页 > Web开发 > 详细

Asp.Net Mvc: 应用BindAttribute

时间:2015-06-15 13:00:24      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

源:http://www.shangxueba.com/jingyan/103118.html

 

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就讲到这

Asp.Net Mvc: 应用BindAttribute

标签:

原文地址:http://www.cnblogs.com/songyanrong/p/4576673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!