一、扩展方法的语法
在视图中使用扩展方法的时候 如果扩展方法定义的类在其他命名空间,需要首先引用该命名空间,才能使用该扩展方法
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>
版权声明:除特别声明外,本站所有文章皆是本站原创,转载请以超链接形式注明出处!