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视图引擎就足够了.但是有时我们想在我们的项目支 ...
随机推荐
- HBase 架构脑图
https://docs.transwarp.io/5.0/goto?file=HyperbaseManual_intro-hbase.html#intro-hbase
- 【ASP.NET MVC系列】浅谈ASP.NET MVC资源过滤和授权
最近比较忙,博客很久没更新了,很多博友问何时更新博文,因此,今天就花了点时间,写了本篇文章,但愿大家喜欢. 本篇文章不适合初学者,需要对ASP.NET MVC具有一定基础. 本篇文章主要从ASP.NE ...
- Java网络编程的Java流介绍
前言 网络程序所做的很大一部分工作都是简单的输入输出:将数据字节从一个系统移动到另一个系统.Java的I/O建立于流(stream)之上.输入流读取数据,输出流写入数据.过滤器流(filter)流可以 ...
- python等值和大小比较
等值.大小比较 在python中,只要两个对象的类型相同,且它们是内置类型(字典除外),那么这两个对象就能进行比较.关键词:内置类型.同类型.所以,两个对象如果类型不同,就没法比较,比如数值类型的数值 ...
- 翻译:insert on duplicate key update(已提交到MariaDB官方手册)
本文为mariadb官方手册:INSERT ON DUPLICATE KEY UPDATE的译文. 原文:https://mariadb.com/kb/en/insert-on-duplicate-k ...
- c#中的特性Attribute
一:特性是什么?特性怎么创建怎么使用? 这一章节,我想谈谈c#的特性方面的知识,特性大家在工作开发中都很熟悉,比如我们经常见到的 1:key Display --EF 2:Import 3:HttpG ...
- svn迁移后本地地址变更及externals无效的问题
1.软件: visual SVN Server 2.具体方法: 在打开本地原来SVN check out的根目录,点右键,tortoiseSVN --> relocate 弹出的对话框中修改s ...
- Android开发过程中的坑及解决方法收录(五)
1. 导入依赖库出现错误 因为使用的sdk版本不同,使用下列代码强制使用最低版本,25.3.1就是我当前使用的版本号,根据自己的情况修改 configurations.all { resolution ...
- 6.3 OrderBy 优化
1. 创建实例 create table tblA( age int, birth TIMESTAMP not null ); insert into tblA(age,birth) values(2 ...
- 【Java每日一题】20170309
20170308问题解析请点击今日问题下方的“[Java每日一题]20170309”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...