ASP.NET MVC 扩展方法

寻技术 ASP.NET编程 / 其他编程 2023年10月28日 115

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

 

关闭

用微信“扫一扫”