一、扩展方法的语法
        在视图中使用扩展方法的时候 如果扩展方法定义的类在其他命名空间,需要首先引用该命名空间,才能使用该扩展方法
        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 扩展方法的更多相关文章

  1. ASP.NET MVC扩展库

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

  2. Asp.Net MVC 扩展 Html.ImageFor 方法详解

    背景: 在Asp.net MVC中定义模型的时候,DataType有DataType.ImageUrl这个类型,但htmlhelper却无法输出一个img,当用脚手架自动生成一些form或表格的时候, ...

  3. 转:ASP.NET MVC扩展之HtmlHelper辅助方法

    1.什么是HtmlHelper辅助方法?其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class F ...

  4. ASP.NET MVC扩展之HtmlHelper辅助方法

    什么是HtmlHelper辅助方法? 其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class Fo ...

  5. 17+个ASP.NET MVC扩展点【附源码】

    1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中!即:创建一个实现了IHttpmodule接口的类,并将配置WebConfig.  在自定义的Http ...

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

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

  7. 16个ASP.NET MVC扩展点【附源码】

    转载于:http://www.cnblogs.com/wupeiqi/p/3570445.html 1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中! ...

  8. MVC 扩展方法特点

    .NET MVC 3中扩展方法特点: (1)扩展类的名称以Extensions结尾: (2)扩展类的类型是static: (3)扩展方法至少有一个参数,第一个参数必须指定该方法作用于哪个类型,并且该参 ...

  9. ASP.NET MVC扩展自定义视图引擎支持多模板&动态换肤skins机制

    ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的项目支 ...

随机推荐

  1. HBase 架构脑图

    https://docs.transwarp.io/5.0/goto?file=HyperbaseManual_intro-hbase.html#intro-hbase

  2. 【ASP.NET MVC系列】浅谈ASP.NET MVC资源过滤和授权

    最近比较忙,博客很久没更新了,很多博友问何时更新博文,因此,今天就花了点时间,写了本篇文章,但愿大家喜欢. 本篇文章不适合初学者,需要对ASP.NET MVC具有一定基础. 本篇文章主要从ASP.NE ...

  3. Java网络编程的Java流介绍

    前言 网络程序所做的很大一部分工作都是简单的输入输出:将数据字节从一个系统移动到另一个系统.Java的I/O建立于流(stream)之上.输入流读取数据,输出流写入数据.过滤器流(filter)流可以 ...

  4. python等值和大小比较

    等值.大小比较 在python中,只要两个对象的类型相同,且它们是内置类型(字典除外),那么这两个对象就能进行比较.关键词:内置类型.同类型.所以,两个对象如果类型不同,就没法比较,比如数值类型的数值 ...

  5. 翻译:insert on duplicate key update(已提交到MariaDB官方手册)

    本文为mariadb官方手册:INSERT ON DUPLICATE KEY UPDATE的译文. 原文:https://mariadb.com/kb/en/insert-on-duplicate-k ...

  6. c#中的特性Attribute

    一:特性是什么?特性怎么创建怎么使用? 这一章节,我想谈谈c#的特性方面的知识,特性大家在工作开发中都很熟悉,比如我们经常见到的 1:key Display --EF 2:Import 3:HttpG ...

  7. svn迁移后本地地址变更及externals无效的问题

    1.软件: visual SVN Server 2.具体方法: 在打开本地原来SVN check  out的根目录,点右键,tortoiseSVN --> relocate 弹出的对话框中修改s ...

  8. Android开发过程中的坑及解决方法收录(五)

    1. 导入依赖库出现错误 因为使用的sdk版本不同,使用下列代码强制使用最低版本,25.3.1就是我当前使用的版本号,根据自己的情况修改 configurations.all { resolution ...

  9. 6.3 OrderBy 优化

    1. 创建实例 create table tblA( age int, birth TIMESTAMP not null ); insert into tblA(age,birth) values(2 ...

  10. 【Java每日一题】20170309

    20170308问题解析请点击今日问题下方的“[Java每日一题]20170309”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...