欢迎来到天天文库
浏览记录
ID:55894483
大小:96.50 KB
页数:9页
时间:2020-06-13
《.NET MVC 的自定义模型属性别名绑定的使用.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、最近在研究 ASP.NETMVC模型绑定,发现 DefaultModelBinder有一个弊端,就是无法实现对浏览器请求参数的自定义,最初的想法是想为实体模型的属性设置特性(Attribute),然后通过取得设置的特性值对属性进行赋值,研究了好久MVC源码之后发现可以通过重写 DefaultModelBinder的 BindProperty方法可以达到预期的目的。ASP.NETMVC中有一个自定义模型绑定特性 CustomModelBinderAttribute,打算通过重写 CustomModelBinderAttribute 来对实体属性进行出来,实现如下:[Att
2、ributeUsageAttribute(AttributeTargets.Class
3、AttributeTargets.Struct
4、AttributeTargets.Enum
5、AttributeTargets.Interface
6、AttributeTargets.Parameter,AllowMultiple=false, Inherited=false)]publicabstractclassCustomModelBinderAttribute:Attribute但是由于 CustomModelBinderAttribute不支持对属性设置特性,所以只好继承
7、 Attribute类重新写一个特性,代码如下://////表示一个调用自定义模型联编程序的特性。///[AttributeUsage(ValidTargets,AllowMultiple=false,Inherited=false)]publicclassPropertyModelBinderAttribute:Attribute{ /// ///指定此属性可以应用特性的应用程序元素。 /// internalconstAttributeTargetsValidTarg
8、ets=AttributeTargets.Field
9、AttributeTargets.Enum
10、AttributeTargets.Property
11、AttributeTargets.Parameter; /// ///声明属性名称。 /// privatestring_propertyName=string.Empty; /// ///获取或设置属性别名。 /// publicstringPropertyName { get
12、{return_propertyName;} } /// ///使用指定的属性别名。 /// ///指定的属性别名。 publicPropertyModelBinderAttribute(stringpropertyName) { _propertyName=propertyName; } /// ///检索关联的模型联编程序。。 ///
13、///对实现System.Web.Mvc.IModelBinder接口的对象的引用。 publicIModelBinderGetBinder() { returnnewPropertyModelBinder(); }这样就可以在实体模型的属性上设置别名了。//////表示一个城市筛选实体对象模型。///[ModelBinder(typeof(PropertyModelBinder))]publicclassCityFilteringModel:BaseEntity
14、Model{ /// ///获取或设置城市英文名称。 /// publicstringCityEnglishName{get;set;} /// ///获取或设置城市编号。 /// [PropertyModelBinder("cid")] publicintCityId{get;set;} /// ///获取或设置城市名称。 /// [Proper
此文档下载收益归作者所有