一、擴展方法的語法 在視圖中使用擴展方法的時候 如果擴展方法定義的類在其他命名空間,需要首先引用該命名空間,才能使用該擴展方法 static class 靜態類名 { static 返回類型 擴展方法名(this 擴展的類型 對象名,[其他參數列表]) { //擴展方法代碼 } } eg1:給Str ...
一、擴展方法的語法
在視圖中使用擴展方法的時候 如果擴展方法定義的類在其他命名空間,需要首先引用該命名空間,才能使用該擴展方法
static class 靜態類名
{
static 返回類型 擴展方法名(this 擴展的類型 對象名,[其他參數列表])
{
//擴展方法代碼
}
}
eg1:給String類型增加一個判斷字元串是否為整數的擴展方法
1 /// <summary> 2 /// 給String類型增加一個判斷字元串是否為整數的擴展方法 3 /// </summary> 4 public static class StringExt 5 { 6 public static bool IsInt(this String str) 7 { 8 int i; 9 return int.TryParse(str, out i); 10 } 11 } 12 13 public class Program 14 { 15 static void Main(string[] args) 16 { 17 String str = "123"; 18 if (str.IsInt()) 19 { 20 Console.WriteLine(str + "是整數"); 21 } 22 else 23 { 24 Console.WriteLine(str + "不是整數"); 25 } 26 Console.ReadLine(); 27 } 28 }
eg2:定義學生類的擴展方法,用來實現驗證郵箱
學生類:
1 public class Student 2 { 3 public int id { get; set; } 4 public string name { get; set; } 5 public string email { get; set; } 6 7 public Student() { } 8 public Student(int _id,string _name,string _email) 9 { 10 id = _id; 11 name = _name; 12 email = _email; 13 } 14 }
擴展方法類:
1 //郵箱驗證擴展方法 2 public static bool IsValidEmail(this Student stu) 3 { 4 int i = stu.email.LastIndexOf('@'); 5 int j = stu.email.LastIndexOf('.'); 6 if(i<j) 7 { 8 return true; 9 } 10 else 11 { 12 return false; 13 } 14 } 15 public class Program 16 { 17 static void Main(string[] args) 18 { 19 Student stu = new Student(1, "Mary", "[email protected]"); 20 21 22 bool rt = stu.IsValidEmail(); //調用擴展方法 23 Console.WriteLine(rt); 24 25 rt = StuExtend.IsValidEmail(stu); //調用擴展方法 26 Console.WriteLine(rt); 27 Console.ReadLine(); 28 } 29 }
eg3:擴展HtmlHelper
擴展方法類
1 public static class HtmlExtension 2 { 3 /// <summary> 4 /// 輸出表單提交按鈕 5 /// </summary> 6 /// <param name="htmlHelper">HtmlHelper對象</param> 7 /// <param name="name"></param> 8 /// <param name="value"></param> 9 /// <returns></returns> 10 public static MvcHtmlString Submit(this HtmlHelper htmlHelper,string name,string value) 11 { 12 //TagBuilder 用於輔助創建標記 13 var builder = new TagBuilder("input"); 14 builder.MergeAttribute("type","submit"); 15 //設置value屬性 16 builder.MergeAttribute("value",value); 17 //設置name屬性 18 builder.MergeAttribute("name",name); 19 //設置id屬性 20 builder.GenerateId(name); 21 return MvcHtmlString.Create(builder.ToString()); 22 } 23 24 public static MvcHtmlString Submit(this HtmlHelper htmlHelper, string name, string value, object htmlAttributes) 25 { 26 //TagBuilder 用於輔助創建標記 27 var builder = new TagBuilder("input"); 28 builder.MergeAttribute("type", "submit"); 29 //設置value屬性 30 builder.MergeAttribute("value", value); 31 //設置name屬性 32 builder.MergeAttribute("name", name); 33 //設置id屬性 34 builder.GenerateId(name); 35 //設置其他屬性 36 builder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 37 return MvcHtmlString.Create(builder.ToString()); 38 } 39 }
//頁面中進行使用
1 @{ 2 Layout = null; 3 } 4 @using ExtensionMethods.App_Code; 5 6 <!DOCTYPE html> 7 8 <html> 9 <head> 10 <meta name="viewport" content="width=device-width" /> 11 <title>Index</title> 12 </head> 13 <body> 14 <div> 15 @Html.Submit("login","登錄") 16 17 @Html.Submit("login", "登錄", new { @class="opt_sub",title="點擊提交"}) 18 </div> 19 </body> 20 </html>