ASP.NET怎么实现模板

发布时间:2021-07-15 14:28:14 作者:chen
阅读:157
开发者专用服务器限时活动,0元免费领! 查看>>

这篇文章主要讲解了“ASP.NET怎么实现模板”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET怎么实现模板”吧!

ASP.NET模板基本的实现方法

在以前(或许现在),当我们在做WEB项目的时候,常常会用到一些共用文件,比如整页的顶部(页眉),左部(导航),底部(页脚)等等一些共用的HTML,ASP等文件,即便如此,我们也需要预先为这些文件做好框架的样式(一般是用table吧?!没几个会用DIV吧),以组合(include)这些文件得到一个完整的页面,这些共用文件的组合,这里假设把它定义成模板(尽管模板的真正含义可能远不止此)。即便如此,当我们项目中整个框架发生变动时,我们不得修改原先通过table等等一些HTML标签定义好的每个需要这样模板的页面,而这样的工作尽管可以通过ctrl+c和ctrl+v来完成,但同时工作量也是巨大的,耗时的。一下是ASP.NET模板基本的实现方法

发展

在ASP.NET里,使用的是面向对象的开发模式,可以这么理解---每个页面都是一个从SystemWeb.UI.Page继承的Class,这个类给我们提供了一些诸如缓存,表示,应答,请求等服务(说是方法也行)。通过面向对象的方法是不是有比用include更好的解决方法呢?当然,答案是肯定的。

实现

记得有句名言叫“任何问题都可以通过加入一个中间层来实现”,举个很简单的例子,我们常常使用Façade这个模式降低系统的耦合度,而我们又为什么要使用设计模式呢?主要是用来减小耦合提高复用的。

从所有的ASPX页面都由SystemWeb.UI.Page继承而来这点上来看,我们只需在ASPX和SystemWeb.UI.Page之间加入一层,写一个我们自己的Class就可以使问题变得简单化,而在.NET框架中,允许用户自定义HTML代码(这点可以参考Web User Controls),这样解决问题的雏形就出来了。

我们加入的一个中间层,该自定类继承System.Web.UI.Page这个基类,下面给出自定类的代码:

  1. PageBase.cs  

  2. publicclassPageBase:System.Web.UI.Page  

  3. {  

  4. publicstringPageTitle="测试模板";  

  5. protectedoverridevoidRender(System.Web.UI.HtmlTextWriterwriter)  

  6. {  

  7. writer.Write(@"<html><head> 

  8. <metahttp-equivmetahttp-equiv='Content-Type'content='text/html;charset=gb2312'> 

  9. <title>"+this.PageTitle+"</title></head>");  

  10. writer.Write(@"<body> 

  11. <tablebordertableborder='0'width='680'> 

  12. <tr> 

  13. <tdwidthtdwidth='160'bgcolor='#006699'align='center'><fontcolorfontcolor='
    #FFFFFF'
    ><b><ahrefahref='index.aspx'>首页</a></b></font></td> 

  14. <tdcolspantdcolspan='2'width='520'>广告条</td> 

  15. </tr> 

  16. <tr> 

  17. <tdwidthtdwidth='160'valign='top'> 

  18. <p>导航</p> 

  19. <p><ahrefahref='newContact.aspx'>添加联系人</a></p> 

  20. <p>查找联系人</p> 

  21. </tr> 

  22. <tdwidthtdwidth='10'> </td> 

  23. <tdwidthtdwidth='510'> 

  24. ");  

  25. base.Render(writer);  

  26. writer.Write(@"</td></tr><tr><tdwidthtdwidth='100%'colspan='3'>
    页脚</td></tr></table></body></html>");  

  27. }  

上面的PageBase.cs就是我们的自定类,这样,我们在其他ASPX页面中就可以直接继承PageBase这个类,而非System.Web.UI.Page,下面分别是index.aspx和newContact.aspx的代码(分别包含index.aspx.cs和newContact.aspx.cs):

  1. Index.aspx  

  2. <%@Pagelanguage="c#"Codebehind="index.aspx.cs"AutoEventWireup=
    "false"Inherits="wab.index"%> 

  3. <formidformid="index"method="post"runat="server"> 

  4. <asp:DataGrididasp:DataGridid="contacts"runat="server"Width=
    "492px"Height="104px"></asp:DataGrid> 

  5. </form> 

  6. index.aspx.cs(继承自定义类PageBase)  

  7. publicclassindex:PageBase  

  8. {  

  9. protectedSystem.Web.UI.WebControls.DataGridcontacts;  

  10. privatevoidPage_Load(objectsender,System.EventArgse)  

  11. {  

  12. //在此处放置用户代码以初始化页面  

  13. }  

  14. #regionWebFormDesignergeneratedcode  

  15. overrideprotectedvoidOnInit(EventArgse)  

  16. {  

  17. //  

  18. //CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。  

  19. //  

  20. InitializeComponent();  

  21. base.OnInit(e);  

  22. }  

  23. ///<summary> 

  24. ///设计器支持所需的方法-不要使用代码编辑器修改  

  25. ///此方法的内容。  

  26. ///</summary> 

  27. privatevoidInitializeComponent()  

  28. {  

  29. this.Load+=newSystem.EventHandler(this.Page_Load);  

  30. }  

  31. #endregion  

  32. }  

  33. newContact.aspx  

  34. <%@Pagelanguage="c#"Codebehind="newContact.aspx.cs"AutoEventWireup=
    "false"Inherits="wab.newContact"%> 

  35. <formidformid="newContact"method="post"runat="server"> 

  36. <P><FONTfaceFONTface="宋体">名子</FONT> 

  37. <asp:TextBoxidasp:TextBoxid="TextBox1"runat="server"></asp:TextBox></P> 

  38. <P><FONTfaceFONTface="宋体">姓氏</FONT> 

  39. <asp:TextBoxidasp:TextBoxid="TextBox2"runat="server"></asp:TextBox></P> 

  40. <P> 

  41. <asp:Buttonidasp:Buttonid="Button1"runat="server"Text="Button">
    </asp:Button></P>
     

  42. </form> 

  43. newContact.aspx.cs(继承自定类PageBase)  

  44. publicclassnewContact:PageBase  

  45. {  

  46. protectedSystem.Web.UI.WebControls.TextBoxTextBox1;  

  47. protectedSystem.Web.UI.WebControls.ButtonButton1;  

  48. protectedSystem.Web.UI.WebControls.TextBoxTextBox2;  

  49. privatevoidPage_Load(objectsender,System.EventArgse)  

  50. {  

  51. }  

  52. #regionWebFormDesignergeneratedcode  

  53. overrideprotectedvoidOnInit(EventArgse)  

  54. {  

  55. //  

  56. //CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的  

  57. //  

  58. InitializeComponent();  

  59. base.OnInit(e);  

  60. }  

  61. ///<summary> 

  62. ///设计器支持所需的方法-不要使用代码编辑器修改  

  63. ///此方法的内容。  

  64. ///</summary> 

  65. privatevoidInitializeComponent()  

  66. {  

  67. this.Load+=newSystem.EventHandler(this.Page_Load)  

  68. }  

  69. #endregion  

感谢各位的阅读,以上就是“ASP.NET怎么实现模板”的内容了,经过本文的学习后,相信大家对ASP.NET怎么实现模板这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:
  1. PHP中Smarty模板如何实现模板继承
  2. asp.net(c#)读取模板并替换模板字段

开发者交流群:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

asp.net

上一篇:ES6中javascript如何实现异步操作

下一篇:ASP.NET Core 2.0中CookieAuthentication如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
开发者交流群×