日期:2014-05-17  浏览次数:20427 次

asp.net头部尾部用母版页与#include导入头尾有什么区别?求机制分析,万谢
今天突然想到asp采用#include导入文件来统一网站头尾,asp.net一般采用母版页的形式,而且asp.net也可以使用#include实现。想问问在asp.net环境下,用哪个更好,他们的机制分别是什么,求高手解答,万分感谢


------解决方案--------------------
在 ASP.NET 中:使用与 ASP.NET 页相同的语法,以声明方式创作的服务器控件。该控件用 .ascx 扩展名保存为文本文件。用户控件允许对页功能进行分区和重用。第一次请求时,页框架立即将用户控件分析为从System.Web.UI.UserControl 派生的类,并将该类编译到一个程序集中;页框架在后面的请求中将重用该程序集。因为用户控件不需要预编译就可以进行页面样式创作和部署,所以开发起来很容易。
数Web站点都在每个页面上重用了母版页的部分内容,例如,公司徽标和菜单常常会出现在所有的页面上。每个页面不需要重复共同的用户界面元素,共同的元素可以添加到母版页上。母版页看起来类似于一般的ASP.NET页面,但定义了由内容元素替换的占位符。

母版页的文件扩展名是.master,它在文件的第一行上使用Master指令,如下所示:

<%@MasterLanguage="C#"AutoEventWireup="true"CodeFile="MasterPage.master.cs"

Inherits="MasterPage" %>

在Web站点中,只有母版页才使用<html>、<head>、<body>和<form>等HTML元素。Web页面本身只包含内嵌到<form>元素中的内容。Web页面可以把它自己的内容嵌入ContentPlace Holder控件中。如果Web页面没有这么做,母版页可以为ContentPlaceHolder定义默认内容。
------解决方案--------------------
一个思路是定好了规矩的布局,你只能补充细节;另一个思路是只有一大堆细节,你负责布局。两个正好相反。

不过用户控件也可以自定义ITemplate类型的属性,在使用时由用户补充细节。只是懂这个的人少,95%的人只知道master page而不知道可以在自己的用户控件上自定义模板属性。
------解决方案--------------------
用户控件是标准的组件的思路。例如你可以在GridView的模板列或者DataList的模板中放入许多控件,包括拖入用户控件,使用绑定表达式将数据字段绑定到用户控件的属性上。

include是组件的思路吗?实际上不值一提。
------解决方案--------------------
不会动态语言的话最简单的方法是用Dreamweaver建立模板页,统一头部尾部,新的页面可以基于此模板页来建立,以后修改模板页的样式也可以自动应用于下属页面。

动态语言PHP和ASP都有Include命令,JSP貌似只能配合Dreamweaver的模板页来使用,ASP.net最方便,有MasterPage,是加强版的模板页。