日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET模板基本的實(shí)現(xiàn)方法

ASP.NET模板基本的實(shí)現(xiàn)方法

在以前(或許現(xiàn)在),當(dāng)我們?cè)谧鯳EB項(xiàng)目的時(shí)候,常常會(huì)用到一些共用文件,比如整頁的頂部(頁眉),左部(導(dǎo)航),底部(頁腳)等等一些共用的HTML,ASP等文件,即便如此,我們也需要預(yù)先為這些文件做好框架的樣式(一般是用table吧?!沒幾個(gè)會(huì)用DIV吧),以組合(include)這些文件得到一個(gè)完整的頁面,這些共用文件的組合,這里假設(shè)把它定義成模板(盡管模板的真正含義可能遠(yuǎn)不止此)。即便如此,當(dāng)我們項(xiàng)目中整個(gè)框架發(fā)生變動(dòng)時(shí),我們不得修改原先通過table等等一些HTML標(biāo)簽定義好的每個(gè)需要這樣模板的頁面,而這樣的工作盡管可以通過ctrl+c和ctrl+v來完成,但同時(shí)工作量也是巨大的,耗時(shí)的。一下是ASP.NET模板基本的實(shí)現(xiàn)方法

發(fā)展

在ASP.NET里,使用的是面向?qū)ο蟮拈_發(fā)模式,可以這么理解---每個(gè)頁面都是一個(gè)從SystemWeb.UI.Page繼承的Class,這個(gè)類給我們提供了一些諸如緩存,表示,應(yīng)答,請(qǐng)求等服務(wù)(說是方法也行)。通過面向?qū)ο蟮姆椒ㄊ遣皇怯斜扔胕nclude更好的解決方法呢?當(dāng)然,答案是肯定的。

實(shí)現(xiàn)

記得有句名言叫“任何問題都可以通過加入一個(gè)中間層來實(shí)現(xiàn)”,舉個(gè)很簡(jiǎn)單的例子,我們常常使用Fa?ade這個(gè)模式降低系統(tǒng)的耦合度,而我們又為什么要使用設(shè)計(jì)模式呢?主要是用來減小耦合提高復(fù)用的。

從所有的ASPX頁面都由SystemWeb.UI.Page繼承而來這點(diǎn)上來看,我們只需在ASPX和SystemWeb.UI.Page之間加入一層,寫一個(gè)我們自己的Class就可以使問題變得簡(jiǎn)單化,而在.NET框架中,允許用戶自定義HTML代碼(這點(diǎn)可以參考Web User Controls),這樣解決問題的雛形就出來了。

我們加入的一個(gè)中間層,該自定類繼承System.Web.UI.Page這個(gè)基類,下面給出自定類的代碼:

 
 
 
  1. PageBase.cs  
  2. publicclassPageBase:System.Web.UI.Page  
  3. {  
  4. publicstringPageTitle="測(cè)試模板";  
  5. protectedoverridevoidRender(System.Web.UI.HtmlTextWriterwriter)  
  6. {  
  7. writer.Write(@" 
  8. <metahttp-equivmetahttp-equiv='Content-Type'content='text/html;charset=gb2312'> 
  9. </font></strong>"+this.PageTitle+"<strong><font>");  
  10. writer.Write(@" 
  11. <tablebordertableborder='0'width='680'> 
  12.  
  13. <tdwidthtdwidth='160'bgcolor='#006699'align='center'><fontcolorfontcolor='
    #FFFFFF'
    ><ahrefahref='index.aspx'>首頁 
  14. <tdcolspantdcolspan='2'width='520'>廣告條 
  15.  
  16.  
  17. <tdwidthtdwidth='160'valign='top'> 
  18. 導(dǎo)航

     
  19. <ahrefahref='newContact.aspx'>添加聯(lián)系人

     
  20. 查找聯(lián)系人

     
  21.  
  22. <tdwidthtdwidth='10'>  
  23. <tdwidthtdwidth='510'> 
  24. ");  
  25. base.Render(writer);  
  26. writer.Write(@"<tdwidthtdwidth='100%'colspan='3'>
    頁腳");  
  27. }  

上面的PageBase.cs就是我們的自定類,這樣,我們?cè)谄渌鸄SPX頁面中就可以直接繼承PageBase這個(gè)類,而非System.Web.UI.Page,下面分別是index.aspx和newContact.aspx的代碼(分別包含index.aspx.cs和newContact.aspx.cs):

 
 
 
  1. Index.aspx  
  2.  
  3. <%@Pagelanguage="c#"Codebehind="index.aspx.cs"AutoEventWireup=
    "false"Inherits="wab.index"%> 
  4. <formidformid="index"method="post"runat="server"> 
  5. <asp:DataGrididasp:DataGridid="contacts"runat="server"Width=
    "492px"Height="104px"> 
  6.  
  7. index.aspx.cs(繼承自定義類PageBase)  
  8. publicclassindex:PageBase  
  9. {  
  10. protectedSystem.Web.UI.WebControls.DataGridcontacts;  
  11. privatevoidPage_Load(objectsender,System.EventArgse)  
  12. {  
  13. //在此處放置用戶代碼以初始化頁面  
  14. }  
  15. #regionWebFormDesignergeneratedcode  
  16. overrideprotectedvoidOnInit(EventArgse)  
  17. {  
  18. //  
  19. //CODEGEN:該調(diào)用是ASP.NETWeb窗體設(shè)計(jì)器所必需的。  
  20. //  
  21. InitializeComponent();  
  22. base.OnInit(e);  
  23. }  
  24. /// 
  25. ///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改  
  26. ///此方法的內(nèi)容。  
  27. /// 
  28. privatevoidInitializeComponent()  
  29. {  
  30. this.Load+=newSystem.EventHandler(this.Page_Load);  
  31. }  
  32. #endregion  
  33. }  
  34. newContact.aspx  
  35. <%@Pagelanguage="c#"Codebehind="newContact.aspx.cs"AutoEventWireup=
    "false"Inherits="wab.newContact"%> 
  36. <formidformid="newContact"method="post"runat="server"> 
  37. <FONTfaceFONTface="宋體">名子 

  38. <asp:TextBoxidasp:TextBoxid="TextBox1"runat="server">

     
  39. <FONTfaceFONTface="宋體">姓氏 

  40. <asp:TextBoxidasp:TextBoxid="TextBox2"runat="server">

     
  41.  

  42. <asp:Buttonidasp:Buttonid="Button1"runat="server"Text="Button">

     
  43.  
  44. newContact.aspx.cs(繼承自定類PageBase)  
  45. publicclassnewContact:PageBase  
  46. {  
  47. protectedSystem.Web.UI.WebControls.TextBoxTextBox1;  
  48. protectedSystem.Web.UI.WebControls.ButtonButton1;  
  49. protectedSystem.Web.UI.WebControls.TextBoxTextBox2;  
  50. privatevoidPage_Load(objectsender,System.EventArgse)  
  51. {  
  52. }  
  53. #regionWebFormDesignergeneratedcode  
  54. overrideprotectedvoidOnInit(EventArgse)  
  55. {  
  56. //  
  57. //CODEGEN:該調(diào)用是ASP.NETWeb窗體設(shè)計(jì)器所必需的  
  58. //  
  59. InitializeComponent();  
  60. base.OnInit(e);  
  61. }  
  62. /// 
  63. ///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改  
  64. ///此方法的內(nèi)容。  
  65. /// 
  66. privatevoidInitializeComponent()  
  67. {  
  68. this.Load+=newSystem.EventHandler(this.Page_Load)  
  69. }  
  70. #endregion  

以上就是ASP.NET模板基本的實(shí)現(xiàn)方法,不過在此先聲明一點(diǎn),這么做會(huì)讓系統(tǒng)的性能下降一點(diǎn)點(diǎn),但是這一點(diǎn)點(diǎn)并不影響實(shí)際項(xiàng)目,但我相信這一點(diǎn)點(diǎn)的系統(tǒng)性能換來的是日后維護(hù)的方便,相信很值得。

【編輯推薦】

  1. ASP.NET開發(fā)技巧之Theme功能淺析
  2. 詳解ASP.NET動(dòng)態(tài)編譯
  3. Apache支持ASP.NET方法淺析
  4. 淺談ASP.NET服務(wù)器標(biāo)準(zhǔn)控件
  5. ASP.NET中SQL Server數(shù)據(jù)庫備份恢復(fù)淺析

分享標(biāo)題:ASP.NET模板基本的實(shí)現(xiàn)方法
分享路徑:http://m.5511xx.com/article/cojiphg.html