這篇文章主要講解了“ASP.NET怎么實(shí)現(xiàn)模板”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ASP.NET怎么實(shí)現(xiàn)模板”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到城東網(wǎng)站設(shè)計(jì)與城東網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋城東地區(qū)。
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è)基類,下面給出自定類的代碼:
PageBase.cs
publicclassPageBase:System.Web.UI.Page
{
publicstringPageTitle="測(cè)試模板";
protectedoverridevoidRender(System.Web.UI.HtmlTextWriterwriter)
{
writer.Write(@"<html><head>
<metahttp-equivmetahttp-equiv='Content-Type'content='text/html;charset=gb2312'>
<title>"+this.PageTitle+"</title></head>");
writer.Write(@"<body>
<tablebordertableborder='0'width='680'>
<tr>
<tdwidthtdwidth='160'bgcolor='#006699'align='center'><fontcolorfontcolor='
#FFFFFF'><b><ahrefahref='index.aspx'>首頁</a></b></font></td><tdcolspantdcolspan='2'width='520'>廣告條</td>
</tr>
<tr>
<tdwidthtdwidth='160'valign='top'>
<p>導(dǎo)航</p>
<p><ahrefahref='newContact.aspx'>添加聯(lián)系人</a></p>
<p>查找聯(lián)系人</p>
</tr>
<tdwidthtdwidth='10'> </td>
<tdwidthtdwidth='510'>
");
base.Render(writer);
writer.Write(@"</td></tr><tr><tdwidthtdwidth='100%'colspan='3'>
頁腳</td></tr></table></body></html>");}
}
上面的PageBase.cs就是我們的自定類,這樣,我們?cè)谄渌鸄SPX頁面中就可以直接繼承PageBase這個(gè)類,而非System.Web.UI.Page,下面分別是index.aspx和newContact.aspx的代碼(分別包含index.aspx.cs和newContact.aspx.cs):
Index.aspx
<%@Pagelanguage="c#"Codebehind="index.aspx.cs"AutoEventWireup=
"false"Inherits="wab.index"%><formidformid="index"method="post"runat="server">
<asp:DataGrididasp:DataGridid="contacts"runat="server"Width=
"492px"Height="104px"></asp:DataGrid></form>
index.aspx.cs(繼承自定義類PageBase)
publicclassindex:PageBase
{
protectedSystem.Web.UI.WebControls.DataGridcontacts;
privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此處放置用戶代碼以初始化頁面
}
#regionWebFormDesignergeneratedcode
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:該調(diào)用是ASP.NETWeb窗體設(shè)計(jì)器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改
///此方法的內(nèi)容。
///</summary>
privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load);
}
#endregion
}
newContact.aspx
<%@Pagelanguage="c#"Codebehind="newContact.aspx.cs"AutoEventWireup=
"false"Inherits="wab.newContact"%><formidformid="newContact"method="post"runat="server">
<P><FONTfaceFONTface="宋體">名子</FONT>
<asp:TextBoxidasp:TextBoxid="TextBox1"runat="server"></asp:TextBox></P>
<P><FONTfaceFONTface="宋體">姓氏</FONT>
<asp:TextBoxidasp:TextBoxid="TextBox2"runat="server"></asp:TextBox></P>
<P>
<asp:Buttonidasp:Buttonid="Button1"runat="server"Text="Button">
</asp:Button></P></form>
newContact.aspx.cs(繼承自定類PageBase)
publicclassnewContact:PageBase
{
protectedSystem.Web.UI.WebControls.TextBoxTextBox1;
protectedSystem.Web.UI.WebControls.ButtonButton1;
protectedSystem.Web.UI.WebControls.TextBoxTextBox2;
privatevoidPage_Load(objectsender,System.EventArgse)
{
}
#regionWebFormDesignergeneratedcode
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:該調(diào)用是ASP.NETWeb窗體設(shè)計(jì)器所必需的
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
///設(shè)計(jì)器支持所需的方法-不要使用代碼編輯器修改
///此方法的內(nèi)容。
///</summary>
privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load)
}
#endregion
}
感謝各位的閱讀,以上就是“ASP.NET怎么實(shí)現(xiàn)模板”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)ASP.NET怎么實(shí)現(xiàn)模板這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)站名稱:ASP.NET怎么實(shí)現(xiàn)模板
本文鏈接:http://chinadenli.net/article8/pijeip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)