ASP.NET MVC 扩展方法
一、扩展方法的语法
在视图中使用扩展方法的时候 如果扩展方法定义的类在其他命名空间,需要首先引用该命名空间,才能使用该扩展方法
static class 静态类名
{
static 返回类型 扩展方法名(this 扩展的类型 对象名,[其他参数列表])
{
//扩展方法代码
}
}
eg1:给String类型增加一个判断字符串是否为整数的扩展方法
/// <summary>
/// 给String类型增加一个判断字符串是否为整数的扩展方法
/// </summary>
public static class StringExt
{
public static bool IsInt(this String str)
{
int i;
return int.TryParse(str, out i);
}
} public class Program
{
static void Main(string[] args)
{
String str = "";
if (str.IsInt())
{
Console.WriteLine(str + "是整数");
}
else
{
Console.WriteLine(str + "不是整数");
}
Console.ReadLine();
}
}
eg2:定义学生类的扩展方法,用来实现验证邮箱
学生类:
public class Student
{
public int id { get; set; }
public string name { get; set; }
public string email { get; set; } public Student() { }
public Student(int _id,string _name,string _email)
{
id = _id;
name = _name;
email = _email;
}
}
扩展方法类:
//邮箱验证扩展方法
public static bool IsValidEmail(this Student stu)
{
int i = stu.email.LastIndexOf('@');
int j = stu.email.LastIndexOf('.');
if(i<j)
{
return true;
}
else
{
return false;
}
}
public class Program
{
static void Main(string[] args)
{
Student stu = new Student(, "Mary", "abc@qq.com"); bool rt = stu.IsValidEmail(); //调用扩展方法
Console.WriteLine(rt); rt = StuExtend.IsValidEmail(stu); //调用扩展方法
Console.WriteLine(rt);
Console.ReadLine();
}
}
eg3:扩展HtmlHelper
扩展方法类
public static class HtmlExtension
{
/// <summary>
/// 输出表单提交按钮
/// </summary>
/// <param name="htmlHelper">HtmlHelper对象</param>
/// <param name="name"></param>
/// <param name="value"></param>
/// <returns></returns>
public static MvcHtmlString Submit(this HtmlHelper htmlHelper,string name,string value)
{
//TagBuilder 用于辅助创建标记
var builder = new TagBuilder("input");
builder.MergeAttribute("type","submit");
//设置value属性
builder.MergeAttribute("value",value);
//设置name属性
builder.MergeAttribute("name",name);
//设置id属性
builder.GenerateId(name);
return MvcHtmlString.Create(builder.ToString());
} public static MvcHtmlString Submit(this HtmlHelper htmlHelper, string name, string value, object htmlAttributes)
{
//TagBuilder 用于辅助创建标记
var builder = new TagBuilder("input");
builder.MergeAttribute("type", "submit");
//设置value属性
builder.MergeAttribute("value", value);
//设置name属性
builder.MergeAttribute("name", name);
//设置id属性
builder.GenerateId(name);
//设置其他属性
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
return MvcHtmlString.Create(builder.ToString());
}
}
//页面中进行使用
@{
Layout = null;
}
@using ExtensionMethods.App_Code;
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.Submit("login","登录")
@Html.Submit("login", "登录", new { @class="opt_sub",title="点击提交"})
</div>
</body>
</html>
ASP.NET MVC 扩展方法的更多相关文章
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- Asp.Net MVC 扩展 Html.ImageFor 方法详解
背景: 在Asp.net MVC中定义模型的时候,DataType有DataType.ImageUrl这个类型,但htmlhelper却无法输出一个img,当用脚手架自动生成一些form或表格的时候, ...
- 转:ASP.NET MVC扩展之HtmlHelper辅助方法
1.什么是HtmlHelper辅助方法?其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class F ...
- ASP.NET MVC扩展之HtmlHelper辅助方法
什么是HtmlHelper辅助方法? 其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class Fo ...
- 17+个ASP.NET MVC扩展点【附源码】
1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中!即:创建一个实现了IHttpmodule接口的类,并将配置WebConfig. 在自定义的Http ...
- ASP.NET MVC 传值方法ViewData与ViewBag的区别
一.介绍 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类 ...
- 16个ASP.NET MVC扩展点【附源码】
转载于:http://www.cnblogs.com/wupeiqi/p/3570445.html 1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中! ...
- MVC 扩展方法特点
.NET MVC 3中扩展方法特点: (1)扩展类的名称以Extensions结尾: (2)扩展类的类型是static: (3)扩展方法至少有一个参数,第一个参数必须指定该方法作用于哪个类型,并且该参 ...
- ASP.NET MVC扩展自定义视图引擎支持多模板&动态换肤skins机制
ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的项目支 ...
随机推荐
- Perl解除引用:从引用还原到数据对象
使用引用可以指向数据对象,这似乎很简单. @name1=qw(longshuai wugui); @name2=qw(xiaofang tuner); $ref_name=\@name1; push ...
- IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据
IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据 原文:http://docs.identityserver.io/en/r ...
- [转]Docker版本变化和新版安装
本文转自:http://www.cnblogs.com/Peter2014/p/7704306.html Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版 ...
- C#通过调用WinApi打印PDF文档类,服务器PDF打印、IIS PDF打印
其他网站下载来的类,可以用于Winform.Asp.Net,用于服务器端PDF或其他文件打印. 直接上代码: using System; using System.Collections.Generi ...
- [angularjs] angularjs系列笔记(三)模型
ng-model指令 ng-model可以将输入域的值与AngularJs的变量绑定 双向绑定 当修改输入域的值时候,AngularJs属性的值也将修改 <div ng-app="Ho ...
- Java岗 面试考点精讲(基础篇01期)
即将到来金三银四人才招聘的高峰期,渴望跳槽的朋友肯定跟我一样四处找以往的面试题,但又感觉找的又不完整,在这里我将把我所见到的题目做一总结,并尽力将答案术语化.标准化.预祝大家面试顺利. 术语会让你的面 ...
- react学习(二)之通信篇
react性能提升原理:虚拟DOM react把真是的DOM tree,转化成virtual DOM,每次数据更新后,重新计算virtual DOM并与上一次的作对比,然后对发生改变的部分进行批量更新 ...
- WORLD 文件格式的保存
1,.docx 高版本格式. 该格式,高版本可以打开低版本的文件,低版本不一定能打开高版本的文件 2,.doc 兼容模式 高低版本都可以打开该格式的文件 3, .PDF文件格式 我把WORLD ...
- 小程序 lazy-load 不生效的问题
最近在开发家里喵喵的小程序(娱乐),本想抽一小部分时间做个懒加载.看了小程序官网 API,给 image 标签加上 lazy-load 就能实现懒加载.但从微信开发者工具看,似乎并没有生效.搜了一下, ...
- 学用纯CSS打造可折叠树状菜单
随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习.但是历史告诉我们,好的东西必将盛行,CSS3也终将也会替代CSS2,下面就和大家分享一个 ...