.NET MVC 的自定义模型属性别名绑定的使用.docxVIP

.NET MVC 的自定义模型属性别名绑定的使用.docx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.NETMVC的自定义模型属性别名绑定的使用概要1

最近在研究?ASP.NET MVC 模型绑定,发现?DefaultModelBinder 有一个弊端,就是无法实现对浏览器请求参数的自定义,最初的想法是想为实体模型的属性设置特性(Attribute),然后通过取得设置的特性值对属性进行赋值,研究了好久 MVC 源码之后发现可以通过重写?DefaultModelBinder 的?BindProperty 方法可以达到预期的目的。 ASP.NET MVC 中有一个自定义模型绑定特性?CustomModelBinderAttribute,打算通过重写?CustomModelBinderAttribute?来对实体属性进行出来,实现如下: [AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Interface|AttributeTargets.Parameter, AllowMultiple = false, ????Inherited = false)] public abstract class CustomModelBinderAttribute : Attribute 但是由于?CustomModelBinderAttribute 不支持对属性设置特性,所以只好继承?Attribute 类重新写一个特性,代码如下: /// summary /// 表示一个调用自定义模型联编程序的特性。 /// /summary [AttributeUsage(ValidTargets, AllowMultiple = false, Inherited = false)] public class PropertyModelBinderAttribute : Attribute { ????/// summary ????/// 指定此属性可以应用特性的应用程序元素。 ????/// /summary ????internal const AttributeTargets ValidTargets = AttributeTargets.Field | AttributeTargets.Enum | AttributeTargets.Property | AttributeTargets.Parameter; ????/// summary ????/// 声明属性名称。 ????/// /summary ????private string _propertyName = string.Empty; ? ????/// summary ????/// 获取或设置属性别名。 ????/// /summary ????public string PropertyName ????{ ????????get { return _propertyName; } ????} ? ????/// summary ????/// 使用指定的属性别名。 ????/// /summary ????/// param name=propertyName指定的属性别名。/param ????public PropertyModelBinderAttribute(string propertyName) ????{ ????????_propertyName = propertyName; ????} ? ????/// summary ????/// 检索关联的模型联编程序。。 ????/// /summary ????/// returns对实现 System.Web.Mvc.IModelBinder 接口的对象的引用。/returns ????public IModelBinder GetBinder() ????{ ????????return new PropertyModelBinder(); ????} 这样就可以在实体模型的属性上设置别名了。 /// summary /// 表示一个城市筛选实体对象模型。 /// /summary [ModelBinder(typeof(PropertyModelBinder))] public class CityFilteringModel : BaseEntityModel { ? ????/// summary ????/// 获取或设置城市英文名称。 ????/// /summary ????public string CityEnglishName { get; set; } ????/// summary ????/// 获取或设置城市编号。 ????/// /summary ????[

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档