|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。asp.net|原创如今的良多贸易公司都设有分歧的部门,而这些部门在公司的网站上都有本人的子网站。一样平常情形下,每个部门城市依据本人的必要来保护各自的网站。如许做固然会使公司的网站显得丰厚多彩,但这却会对用户的会见带来方便,也就是说,因为各个部门的子网站没有坚持分歧性而利用户在扫瞄网站时形成了坚苦。侥幸的是,ASP.NET2.0为我们供应了一种办理计划,这就是主页嵌套。
创建嵌套主页
起首必要创建一个尺度的主页,在这个主页上必要加上一些共用的器材,如公司的Logo、公司称号、页脚和菜单等,而每一个部门的子网站必需利用这个尺度的主页。每个部门能够依据本人的营业必要创建各自的主页,然后将这些部门的主页嵌进方才创建的尺度中。如许做不管对终极的用户仍是对每一个部门都是有优点的,关于终极用户,不管他会见哪一个部门的网站,城市看到一样的Logo、菜单和页脚。而关于部门来讲,他们能够本人创建一个内嵌的主页,这个主页的内容能够依据本人部门的营业必要而定。这就象是一个OCX把持嵌在网页上一样。
为了了解怎样创建嵌套主页,上面让我们看一个例子。起首给出一个尺度主页的例子。
<Pclass=MsoNormal>
以下是援用片断:
<%@MasterLanguage="C#"AutoEventWireup="true"
CodeFile="WebsiteMasterPage.master.cs"Inherits="WebsiteMasterPage"%>
<html>
<headrunat="server"id="head">
<title>尺度主页例子</title>
</head>
<body>
<formid="form1"runat="server">
<tablewidth="100%">
<tr>
<tdbgcolor="#006633"colspan="2">
<tableborder="0"cellpadding="0"cellspacing="0"width="100%">
<tr>
<tdalign="left">
<ahref="/MasterPage/Default.aspx">
<imgsrc="http://www.webjx.com/MasterPage/images/header_image.gif"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<tdwidth="25%">
<fontcolor="#3300FF">部门1<br/>部门2<br/></font>
</td>
<tdwidth="75%">
<asp:ContentPlaceHolderID="Main"runat="server">
</asp:ContentPlaceHolder>
</td>
</tr>
<tr>
<tdcolspan="2"></td>
</tr>
<tr>
<tdbgcolor="#0000FF"colspan="2">
<fontcolor="#FFFF00">注脚</font>
</td>
</tr>
</table>
</form>
</body>
</html>下面的尺度主页界说了公司的Logo、注脚和菜单的地位。还界说了部门的主页要嵌进的地位(这个要利用ContentPlaceHolder控件)。部门主页的代码中和下面的代码有些分歧,在部门主页的代码中必要援用上述的尺度主页。这个能够经由过程在部门主页代码中到场MasterPageFile属性完成。上面是一个部门的主页代码:
以下是援用片断:
<%@MasterMasterPageFile="~/Templates/WebsiteMasterPage.master"Language="C#"AutoEventWireup="true"CodeFile="NestedMasterPage.master.cs"Inherits="NestedMasterPage"%>
<asp:ContentID="Content1"ContentPlaceHolderID="Main"runat="server">
<tablewidth="100%">
<tr>
<tdstyle="background-color:BLUE;font-weight:bold;coloar:white">
<fontcolor="#FFFF00">部门主页</font>
</td>
</tr>
<tr>
<td>
<asp:ContentPlaceHolderID="NestedMain"runat="server"/>
</td>
</tr>
</table>
</asp:Content>
从下面的代码能够看出个中援用了尺度主页WebsiteMasterPage.master。并且还界说了一个服务端控件来援用在尺度主页中界说的ContentPlaceHolder的ID(ID为Main)。因为部门主页被嵌套在尺度主页中,因而,必需利用Content服务端控件。另有就是必需到场ContentPlaceHolder控件,这个控件唆使了部门主页显现的地位。
如今这个部门主页已被嵌进到尺度主页中了。部门的主页能够主动承继尺度主页的Logo、注脚和菜单。假如要改换这些大众的元素,只需更新这个尺度主页便可。并且各部门也可依据本人的必要来更新内嵌在尺度主页的部门主页。程序运转界面如所示。
在VisualStudio2005中利用嵌套主页
我们从下面的部门主页代码中能够看到,MasterPageFile属性援用了尺度主页。但这个属性在VisualStudio2005中其实不撑持可视化编纂。因而,要想在VS2005的计划视图中编纂主页,必需将MasterPageFile设为空串。以下面的代码如示:
<%@PageLanguage="C#"MasterPageFile=""Title="部门主页"%>
当我们将MasterPageFile设为空串后,在每次更新尺度主页后在公布时都到手工来修正这个属性。假如不想这么贫苦的话,能够经由过程一些手腕来棍骗一个VisualStudio.NET的计划视图。起首创建一个从System.Web.UI.Page承继的类(将这个类定名为BasePage)。在这个类中界说一个RuntimeMasterPageFile属性(这个属性可使用任何名子)。完成代码以下:
publicclassBasePage:System.Web.UI.Page{
privatestring_RuntimeMasterPageFile;
publicstringRuntimeMasterPageFile{
get{
return_RuntimeMasterPageFile;
}
set{
_RuntimeMasterPageFile=value;
}
}
protectedoverridevoidOnPreInit(EventArgse){
if(_RuntimeMasterPageFile!=null){
this.MasterPageFile=_RuntimeMasterPageFile;
}
base.OnPreInit(e);
}
}
BasePage还重载了OnPreInit办法,以便在Aspx页装载时能够静态地设置MasterPageFile属性。完成了BasePage类后,今后必要内嵌的aspx中的类就能够间接从BasePage承继了。
<Pclass=MsoNormal>
publicpartialclassMyNestedMaster:BasePage{
//详细的完成代码
}
上面我们来修正.aspx文件。起首将MasterPageFile属性设为空串,而且将RuntimeMasterPageFile属性间接加到aspx文件中,并将它的值设为内嵌主页的路径。然后设置CodeFileBaseClass属性为"BasePage",完成代码以下:
<%@PageLanguage="C#"MasterPageFile=""
RuntimeMasterPageFile="~/Templates/NestedMasterPage.master"
CodeFileBaseClass="BasePage"
Inherits="MyNestedMasterAndBasePage"AutoEventWireup="true"
CodeFile="MyNestedMasterAndBasePage.aspx.csTitle="Page1"%>
<asp:ContentID="ContentNested"runat="server"ContentPlaceHolderID="NestedMain">
<p></p><p></p>
财政部主页
<p></p><p></p>
</asp:Content>
在运转时,BasePage类将被实例化,而MasterPageFile属性将主动态地设置为RuntimeMasterPageFile属性的值。
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 |
|