.NET MVC 3中扩展方法特点:

(1)扩展类的名称以Extensions结尾;

(2)扩展类的类型是static;

(3)扩展方法至少有一个参数,第一个参数必须指定该方法作用于哪个类型,并且该参数以this修饰符为前缀;

(4)扩展方法的类型是static;

(5)如果拓展方法的返回值是字符串则返回类型是MvcHtmlString,而不是string;

(6)页面调用必须用using指令导入扩展类型所在的命名空间。

  1. <label for="Address">Address:</label>
  2. <%= Html.TextBox("user.Address")%>
  3. <%= Html.ValidationMessage("user.Address")%>
    1. var errors = DataAnnotationsValidationRunner.GetErrors(user);
    2. if (errors.Any())
    3. {
    4. new RulesException(errors).AddModelStateErrors(ModelState,"user");
    5. }
      1. public static IEnumerable<ErrorInfo> GetErrors(object instance)
      2. {
      3. var metadataAttrib = instance.GetType().GetCustomAttributes(typeof(MetadataTypeAttribute), true)
      4. .OfType<MetadataTypeAttribute>().FirstOrDefault();
      5. var buddyClassOrModelClass = metadataAttrib != null ? metadataAttrib.MetadataClassType : instance.GetType();
      6. var buddyClassProperties = TypeDescriptor.GetProperties(buddyClassOrModelClass).Cast<PropertyDescriptor>();
      7. var modelClassProperties = TypeDescriptor.GetProperties(instance.GetType()).Cast<PropertyDescriptor>();
      8. return from buddyProp in buddyClassProperties
      9. join modelProp in modelClassProperties on buddyProp.Name equals modelProp.Name
      10. from attribute in buddyProp.Attributes.OfType<ValidationAttribute>()
      11. where !attribute.IsValid(modelProp.GetValue(instance))
      12. select new ErrorInfo(buddyProp.Name, attribute.FormatErrorMessage(string.Empty), instance);
      13. }

转载于:https://www.cnblogs.com/jinhaoObject/p/4641046.html

MVC 扩展方法特点相关推荐

  1. (转)[翻译] ASP.NET MVC Tip #1 - 使用扩展方法创建新的HTML Helper

    原文地址:http://weblogs.asp.net/stephenwalther/archive/2008/06/13/asp-net-mvc-tip-1-creating-new-html-he ...

  2. MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便

    先看一下我想要的结果: 很容易它就是一个单选按钮组,当我后台为Html对象(HtmlHelper的一个实例,它被定义在System.Web.Mvc名称空间下的WebViewPage类,即它对于所有MV ...

  3. MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedListT结果集

    namespace Entity {     public interface IPagedList     {         /// <summary>         /// 记录数 ...

  4. mvc html的扩展,关于asp.net mvc 3:Razor无法正确呈现HtmlHelper扩展方法

    我的html helper类中有一个Extension方法来呈现自动完成功能. 这在VS2008和VS2010中的aspx视图引擎中可以很好地工作. Autocomplete类具有一个重载的ToStr ...

  5. MVC ---- 如何扩展方法

    先定义一个扩展类: public static class StringExtend {//扩展一个string的方法public static bool IsNullOrEmpty(this str ...

  6. ASP.NET MVC扩展库

    很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...

  7. 您最喜欢的C#扩展方法是什么? (codeplex.com/extensionoverflow)

    让我们列出一个答案列表,在其中发布优秀和最喜欢的扩展方法 . 要求是必须张贴完整的代码,并提供示例和使用说明. 基于对该主题的高度兴趣,我在Codeplex上建立了一个名为extensionoverf ...

  8. 为ASP.NET MVC扩展异步Action功能(下)

    本文分为上下两部分,您也可以从<Extend ASP.NET MVC for Asynchronous Action>获得全部内容. 执行Action方法 对于执行同步Action的Syn ...

  9. ASP.NET MVC 传值方法ViewData与ViewBag的区别

    一.介绍 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类 ...

最新文章

  1. python【力扣LeetCode算法题库】58-最后一个单词的长度
  2. 如何在MFC中调用CUDA
  3. Java并发编程71道面试题及答案 1
  4. 自定义logback触发器策略进行日志滚动
  5. Java Machine Learning Tools Libraries--转载
  6. IDEA中maven项目所有文件都识别不了,明明存在的类提示找不到,原来只需一键解决。。。
  7. 三十九、Scrapy-redis框架分布式部署
  8. 计算机应用技术编译原理考试题,《编译原理》练习题库含答案(大学期末复习资料).doc...
  9. java安全权限_java.security.SecurityPermission
  10. 最新京东炸年兽活动一键做任务工具v1.4
  11. 中科罗伯特机器人吧_延庆旧县南站附近继续教育
  12. CCF201703-1 分蛋糕(100分)
  13. fastadmin在html中查询数据,常见问题 · fastadmin 常见问题 · 看云
  14. 音创点歌机_音创点歌系统_音创KTV点歌系统下载- 下载之家
  15. “蔡徐坤微博转发过亿”幕后推手一审获刑五年
  16. matlab 二元函数 定义,实验五用matlab求二元函数及极值.doc
  17. matlab aic sic,请教ADF检验时AIC准则和SIC准则不一致时怎么办?
  18. 【1084】幂的尾数
  19. C#操作dxf文件修改和绘制线、标签、块元素
  20. java摇号_java语言实现一个摇号系统,但是可以内部设定中奖名单这个怎么实现?...

热门文章

  1. NSTimer定时器进阶——详细介绍,循环引用分析与解决
  2. ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
  3. 总结一年来的前端学习心得
  4. eclipse 新建java无scr_解决eclipse中没有js代码提示的问题
  5. 如何让自己的写的程序在阿里云一直运行
  6. 安卓APP_ 布局(4) —— TableLayout表格布局
  7. 全国计算机等级考试题库二级C操作题100套(第41套)
  8. 怎样用计算机算出别人的出生日期,【怀孕出生日期计算器_怀孕出生日期计算器专题】- 天鹅到家...
  9. Ribbon、Feign和OpenFeign的区别来了
  10. rust电器元件需要什么材料_云南自考大专报考需要什么材料?