基于ASP.NET MVC的JQueryUI控件开发(3) - Accordion控件设计

来源:互联网 发布:淘宝 摄影布光基本知识 编辑:程序博客网 时间:2024/06/01 22:03

先上图:

使用代码:

Code:
  1. <%using (Html.Accordion("ad1",AccordionOption.AutoHeight|AccordionOption.Navigation)){%>   
  2.         <%using (Html.AccordionPanel("Section 1")){%>   
  3.           <p>   
  4.         Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer   
  5.         ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit   
  6.         amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut   
  7.         odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.   
  8.         </p>   
  9.         <%}%>   
  10.         <%using (Html.AccordionPanel("Section 2")){%>   
  11.           <p>   
  12.         Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet   
  13.         purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor   
  14.         velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In   
  15.         suscipit faucibus urna.   
  16.         </p>   
  17.         <%}%>   
  18.          <%using (Html.AccordionPanel("Section 3")){%>   
  19.           <p>   
  20.         Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.   
  21.         Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero   
  22.         ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis   
  23.         lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.   
  24.         </p>   
  25.         <ul>   
  26.             <li>List item one</li>   
  27.             <li>List item two</li>   
  28.             <li>List item three</li>   
  29.         </ul>   
  30.         <%}%>   
  31.            
  32.         <%using (Html.AccordionPanel("Section 4")){%>   
  33.           <p>   
  34.         Cras dictum. Pellentesque habitant morbi tristique senectus et netus   
  35.         et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in  
  36.         faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia   
  37.         mauris vel est.   
  38.         </p>   
  39.         <p>   
  40.         Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.   
  41.         Class aptent taciti sociosqu ad litora torquent per conubia nostra, per   
  42.         inceptos himenaeos.   
  43.         </p>   
  44.         <%}%>   
  45.     <%}%>  

使用方法说明:

Code:
  1. <%using (Html.Accordion("ad1",选项)){%>   
  2.       <%using (Html.AccordionPanel("Section 1")){%>   
  3.              面板1的内容   
  4.   <%}%>   
  5.   
  6.       <%using (Html.AccordionPanel("Section 2")){%>   
  7.              面板2的内容   
  8.   <%}%>   
  9.    .........................   
  10. <%}%>  

代码和Tabs很相似,不过在这里加了一个选项设置功能,

选项使用枚举类型定义:

Code:
  1. public enum AccordionOption {    
  2.     FillSpace = 1,    
  3.     AutoHeight = 2,    
  4.     Navigation = 4,    
  5.     Collapsible = 8,    
  6.     Mouseover = 16    
  7. }  

使用方法是:

 <%using (Html.Accordion("ad1",AccordionOption.AutoHeight|AccordionOption.Navigation)){%>

问题是如何判断?

判断的方法是用“与”操作,即:(option & AccordionOption.AutoHeight) == AccordionOption.AutoHeight 即可

代码说明:

Html.Accordion方法:

Code:
  1. {   
  2.     return new Accordion(hh, id);   
  3. }   
  4. public static Accordion Accordion(this HtmlHelper hh, string id, string config)   
  5. {   
  6.     return new Accordion(hh, id, config);   
  7. }   
  8.   
  9. public static Accordion Accordion(this HtmlHelper hh, string id,AccordionOption option)   
  10. {   
  11.     return Accordion(hh, id,"",option);   
  12. }   
  13. public static Accordion Accordion(this HtmlHelper hh, string id, string config, AccordionOption option)   
  14. {   
  15.     string cfg = "";   
  16.     cfg += "autoHeight:" + ((option & AccordionOption.AutoHeight)    
  17.                 == AccordionOption.AutoHeight).ToString().ToLower()+",";   
  18.     cfg += "collapsible:" + ((option & AccordionOption.Collapsible)    
  19.                == AccordionOption.Collapsible).ToString().ToLower() + ",";   
  20.     cfg += "fillSpace:" + ((option & AccordionOption.FillSpace)    
  21.                == AccordionOption.FillSpace).ToString().ToLower() + ",";   
  22.     if ((option & AccordionOption.Mouseover) == AccordionOption.Mouseover)   
  23.         cfg += "event:'mouseover',";   
  24.     cfg += "navigation:" + ((option & AccordionOption.Navigation)    
  25.                 == AccordionOption.Navigation).ToString().ToLower();   
  26.     if (!string.IsNullOrEmpty(config))   
  27.         cfg += "," + config;   
  28.     return new Accordion(hh, id, cfg);   
  29. }  

Accordion类代码:

Code:
  1. public class Accordion:IDisposable   
  2. {   
  3.     HtmlHelper hh;   
  4.     string id;   
  5.     string config;   
  6.     public Accordion(HtmlHelper hh, string id):this(hh,id,"")   
  7.     {   
  8.     }   
  9.     public Accordion(HtmlHelper hh, string id,string config)   
  10.     {   
  11.         this.hh = hh;   
  12.         this.id = id;   
  13.         this.config = config;   
  14.         hh.ViewContext.Writer.WriteLine("<div id='"+id+"'>");   
  15.     }  
  16.  
  17.     #region IDisposable 成员   
  18.   
  19.     public void Dispose()   
  20.     {   
  21.         if (string.IsNullOrEmpty(config))   
  22.             config = "{}";   
  23.         else  
  24.             config = "{" + config + "}";   
  25.         hh.ViewContext.Writer.WriteLine("</div>");   
  26.         hh.ViewContext.Writer.WriteLine("<script>$(function(){$('#"+id+"').accordion("+config+");})</script>");   
  27.     }  
  28.  
  29.     #endregion   
  30. }  

Html.AccordionPanel代码:

Code:
  1. public static AccordionPanel AccordionPanel(this HtmlHelper hh, string title)   
  2. {   
  3.     return new AccordionPanel(hh, title);   
  4. }  

AccordionPanel类代码:

Code:
  1. public class AccordionPanel:IDisposable   
  2. {   
  3.     HtmlHelper hh;   
  4.     string title;   
  5.     public AccordionPanel(HtmlHelper hh, string title)   
  6.     {   
  7.         this.hh = hh;   
  8.         this.title = title;   
  9.         hh.ViewContext.Writer.WriteLine("<h3><a href='#'>"+title+"</a></h3>");   
  10.         hh.ViewContext.Writer.WriteLine("<div>");   
  11.     }  
  12.  
  13.     #region IDisposable 成员   
  14.   
  15.     public void Dispose()   
  16.     {   
  17.         hh.ViewContext.Writer.WriteLine("</div>");   
  18.     }  
  19.     #endregion   
  20. }  

基本完成!

下一步准备将Jquery UI的JS,CSS,图片都封装到Dll文件中,用起来更加的方便!

 

 

 

 

 

 

 

原创粉丝点击