仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 949|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之原创:在ASP.NET2.0中完成主页嵌套

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:48:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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属性的值。
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。
小女巫 该用户已被删除
沙发
发表于 2015-1-20 05:01:09 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
山那边是海 该用户已被删除
板凳
发表于 2015-1-28 16:04:19 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
兰色精灵 该用户已被删除
地板
发表于 2015-2-5 22:06:33 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
再见西城 该用户已被删除
5#
发表于 2015-2-13 21:14:51 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
分手快乐 该用户已被删除
6#
发表于 2015-3-4 01:12:21 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
小妖女 该用户已被删除
7#
发表于 2015-3-11 15:22:12 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
小魔女 该用户已被删除
8#
发表于 2015-3-19 01:00:30 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
admin 该用户已被删除
9#
发表于 2015-3-27 00:10:41 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 19:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表