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视图引擎就足够了.但是有时我们想在我们的项目支 ...
随机推荐
- Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
一. MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...
- php安装grpc报No releases available for package解决方法
1.pecl.php.net搜索相应grpc的下载文件,这里找了个stable版本 https://pecl.php.net/get/grpc-1.17.0.tg 2.wge下载+pecl insta ...
- jquery的jsonp的使用
客户端 $(function(){ $.ajax({ type: "get", async: false, url: "http://test.com/json_data ...
- Jenkins入门之新建任务
简单了解了Jenkins界面之后,下面我们简单介绍一下如何使用jenkins创建一个任务.打开Jenkins web管理界面之后,点击左侧最上方的NewItem图标 便会进入如下界面 产生要输入一个构 ...
- 翻译:SET Variable(已提交到MariaDB官方手册)
本文为mariadb官方手册:SET Variable的译文. 原文:https://mariadb.com/kb/en/set-variable/我提交到MariaDB官方手册的译文:https:/ ...
- 面试问烂的 Spring AOP 原理、SpringMVC 过程(求求你别问了)
Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以.但今天笔者带大家一起深入浅出源码,看看他的原理.以期让印象更加深刻,面试的时候游刃有余. Sp ...
- 第一册:lesson eighty three.
原文:Going on holiday. A:Hello Sam, come in. B:Hi,Sam.We are having lunch. Do you want to have lunch w ...
- Entity Framework Code first(转载)
一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...
- oracle 查询表中重复数据
select * from tablename where id in (select id from tablename group by id having count(id) > 1)
- PHP中获取当前页面的URL信息
<? //获取当前的域名: echo $_SERVER['SERVER_NAME']; //获取来源网址,即点击来到本页的上页网址 echo $_SERVER["HTTP_REFERE ...