MVC 扩展方法特点
.NET MVC 3中扩展方法特点:
(1)扩展类的名称以Extensions结尾;
(2)扩展类的类型是static;
(3)扩展方法至少有一个参数,第一个参数必须指定该方法作用于哪个类型,并且该参数以this修饰符为前缀;
(4)扩展方法的类型是static;
(5)如果拓展方法的返回值是字符串则返回类型是MvcHtmlString,而不是string;
(6)页面调用必须用using指令导入扩展类型所在的命名空间。
- <label for="Address">Address:</label>
- <%= Html.TextBox("user.Address")%>
- <%= Html.ValidationMessage("user.Address")%>
- var errors = DataAnnotationsValidationRunner.GetErrors(user);
- if (errors.Any())
- {
- new RulesException(errors).AddModelStateErrors(ModelState,"user");
- }
- public static IEnumerable<ErrorInfo> GetErrors(object instance)
- {
- var metadataAttrib = instance.GetType().GetCustomAttributes(typeof(MetadataTypeAttribute), true)
- .OfType<MetadataTypeAttribute>().FirstOrDefault();
- var buddyClassOrModelClass = metadataAttrib != null ? metadataAttrib.MetadataClassType : instance.GetType();
- var buddyClassProperties = TypeDescriptor.GetProperties(buddyClassOrModelClass).Cast<PropertyDescriptor>();
- var modelClassProperties = TypeDescriptor.GetProperties(instance.GetType()).Cast<PropertyDescriptor>();
- return from buddyProp in buddyClassProperties
- join modelProp in modelClassProperties on buddyProp.Name equals modelProp.Name
- from attribute in buddyProp.Attributes.OfType<ValidationAttribute>()
- where !attribute.IsValid(modelProp.GetValue(instance))
- select new ErrorInfo(buddyProp.Name, attribute.FormatErrorMessage(string.Empty), instance);
- }
转载于:https://www.cnblogs.com/jinhaoObject/p/4641046.html
MVC 扩展方法特点相关推荐
- (转)[翻译] 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 ...
- MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便
先看一下我想要的结果: 很容易它就是一个单选按钮组,当我后台为Html对象(HtmlHelper的一个实例,它被定义在System.Web.Mvc名称空间下的WebViewPage类,即它对于所有MV ...
- MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedListT结果集
namespace Entity { public interface IPagedList { /// <summary> /// 记录数 ...
- mvc html的扩展,关于asp.net mvc 3:Razor无法正确呈现HtmlHelper扩展方法
我的html helper类中有一个Extension方法来呈现自动完成功能. 这在VS2008和VS2010中的aspx视图引擎中可以很好地工作. Autocomplete类具有一个重载的ToStr ...
- MVC ---- 如何扩展方法
先定义一个扩展类: public static class StringExtend {//扩展一个string的方法public static bool IsNullOrEmpty(this str ...
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- 您最喜欢的C#扩展方法是什么? (codeplex.com/extensionoverflow)
让我们列出一个答案列表,在其中发布优秀和最喜欢的扩展方法 . 要求是必须张贴完整的代码,并提供示例和使用说明. 基于对该主题的高度兴趣,我在Codeplex上建立了一个名为extensionoverf ...
- 为ASP.NET MVC扩展异步Action功能(下)
本文分为上下两部分,您也可以从<Extend ASP.NET MVC for Asynchronous Action>获得全部内容. 执行Action方法 对于执行同步Action的Syn ...
- ASP.NET MVC 传值方法ViewData与ViewBag的区别
一.介绍 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类 ...
最新文章
- python【力扣LeetCode算法题库】58-最后一个单词的长度
- 如何在MFC中调用CUDA
- Java并发编程71道面试题及答案 1
- 自定义logback触发器策略进行日志滚动
- Java Machine Learning Tools Libraries--转载
- IDEA中maven项目所有文件都识别不了,明明存在的类提示找不到,原来只需一键解决。。。
- 三十九、Scrapy-redis框架分布式部署
- 计算机应用技术编译原理考试题,《编译原理》练习题库含答案(大学期末复习资料).doc...
- java安全权限_java.security.SecurityPermission
- 最新京东炸年兽活动一键做任务工具v1.4
- 中科罗伯特机器人吧_延庆旧县南站附近继续教育
- CCF201703-1 分蛋糕(100分)
- fastadmin在html中查询数据,常见问题 · fastadmin 常见问题 · 看云
- 音创点歌机_音创点歌系统_音创KTV点歌系统下载- 下载之家
- “蔡徐坤微博转发过亿”幕后推手一审获刑五年
- matlab 二元函数 定义,实验五用matlab求二元函数及极值.doc
- matlab aic sic,请教ADF检验时AIC准则和SIC准则不一致时怎么办?
- 【1084】幂的尾数
- C#操作dxf文件修改和绘制线、标签、块元素
- java摇号_java语言实现一个摇号系统,但是可以内部设定中奖名单这个怎么实现?...
热门文章
- NSTimer定时器进阶——详细介绍,循环引用分析与解决
- ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
- 总结一年来的前端学习心得
- eclipse 新建java无scr_解决eclipse中没有js代码提示的问题
- 如何让自己的写的程序在阿里云一直运行
- 安卓APP_ 布局(4) —— TableLayout表格布局
- 全国计算机等级考试题库二级C操作题100套(第41套)
- 怎样用计算机算出别人的出生日期,【怀孕出生日期计算器_怀孕出生日期计算器专题】- 天鹅到家...
- Ribbon、Feign和OpenFeign的区别来了
- rust电器元件需要什么材料_云南自考大专报考需要什么材料?