温馨提示×

温馨提示×

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

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

如何在ASP.NET网页模版中对内容页访问母版页的资源

发布时间:2021-12-06 13:39:38 来源:亿速云 阅读:224 作者:iii 栏目:编程语言

这篇文章主要介绍“如何在ASP.NET网页模版中对内容页访问母版页的资源”,在日常操作中,相信很多人在如何在ASP.NET网页模版中对内容页访问母版页的资源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在ASP.NET网页模版中对内容页访问母版页的资源”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

母版资源页代码

〈%@ Master Language="C#" %〉  〈!DOCTYPE html PUBLIC "-//W3C//DTD XHTML   1.0 Transitional//EN" "http://www.w3.org/TR/  xhtml1/DTD/xhtml1-transitional.dtd"〉  〈script runat="server"〉  public void SetCurNavItem(int itemIndex)  {  nav.Items[itemIndex].Attributes.CssStyle.  Add("color", "#FF0000");  }  〈/script〉  〈html xmlns="http://www.w3.org/1999/xhtml" 〉  〈head runat="server"〉  〈title〉Untitled Page〈/title〉  〈/head〉  〈body〉  〈form id="form1" runat="server"〉  〈div〉   〈asp:ContentPlaceHolder id="m_header"   runat="server"〉  〈asp:BulletedList ID="nav" runat="server"〉  〈asp:ListItem Text="导航一"〉〈/asp:ListItem〉  〈asp:ListItem Text="导航二"〉〈/asp:ListItem〉  〈/asp:BulletedList〉  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolder ID="m_content"   runat="server"〉在  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolder ID="m_footer"   runat="server"〉  〈p〉版权所有〈/p〉  〈/asp:ContentPlaceHolder〉  〈/div〉  〈/form〉  〈/body〉  〈/html〉

ASP.NET网页模板的内容页代码

〈%@PageLanguage="C#"MasterPageFile="  MasterPage1.master"Title="首页"%〉  〈scriptrunat="server"〉  protectedvoidPage_Load  (objectsender,EventArgse)  {  ((ASP.masterpage1_master)Master).  SetCurNavItem(0);  }  〈/script〉  〈asp:ContentID="content"runat="server" ContentPlaceHolderID="m_content"〉  〈p〉这里是首页的内容〈/p〉  〈/asp:Content〉

效果

如何在ASP.NET网页模版中对内容页访问母版页的资源

可以看到,导航栏的***项突出显示了。

更好的方法

ASP.masterpage1_master 是强制类型转换,这样使用起来似乎不是很方便,因为每次使用 Master 的地方都要重复地写这些代码,我们可以利用 MasterType 指令来实现。

〈%@PageLanguage="C#"MasterPageFile="  MasterPage1.master"Title="首页"%〉  〈%@MasterTypeVirtualPath="MasterPage1.master"%〉  〈scriptrunat="server"〉  protectedvoidPage_Load(objectsender,EventArgse)  {  Master.SetCurNavItem(0);  }  〈/script〉  〈asp:ContentID="content"runat="  server"ContentPlaceHolderID="m_content"〉  〈p〉这里是首页的内容〈/p〉  〈/asp:Content〉

在上一页已经介绍过ASP.NET网页模板访问母版资源的两种方法,其中第二种方法使用简单快捷,但在某些情况下同样显得无能为力。

比如:一个页面需要三种布局风格,这可能就需要三个模板,由访问者决定使用哪一个模板,也就是说在页面开发的时候,还不知道将使用哪一个模板,使用 @ MasterType VirtualPath 也就无法确定 MasterPage 的类型。

我们可以这样做:

◆建立一个基类。

◆各个模板页派生自这个基类。

◆内容页通过 MasterPageFile 确定使用哪个模板,通过 @ MasterType TypeName 来使用基类类型处理这些模板的资源。


具体如下(只演示一个模板文件代码):

基类文件代码:

usingSystem;  usingSystem.Web.UI;  namespaceMasterPageNameSpace  {  publicabstractclassMasterPageClass:  MasterPage  {  publicabstractvoidSetCurNavItem  (intitemIndex);  }  }

注意使用的名称空间和类及方法的修饰限定符。

模板文件代码:

〈%@MasterLanguage="C#"Src="m1.cs" Inherits="MasterPageNameSpace.MasterPageClass"%〉  〈!DOCTYPEhtmlPUBLIC"-//W3C//  DTDXHTML1.0Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/  xhtml1-transitional.dtd"〉  〈scriptrunat="server"〉  publicoverridevoidSetCurNavItem(intitemIndex)  {  nav.Items[itemIndex].Attributes.CssStyle.Add ("color","#FF0000");  }  〈/script〉  〈htmlxmlns="http://www.w3.org/1999/xhtml"〉  〈headrunat="server"〉  〈title〉UntitledPage〈/title〉  〈/head〉  〈body〉  〈formid="form1"runat="server"〉  〈div〉   〈asp:ContentPlaceHolderid="m_header" runat="server"〉  〈asp:BulletedListID="nav"runat="server"〉  〈asp:ListItemText="导航一"〉〈/asp:ListItem〉  〈asp:ListItemText="导航二"〉〈/asp:ListItem〉  〈/asp:BulletedList〉  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolderID="m_content"runat="server"〉  在  〈/asp:ContentPlaceHolder〉   〈asp:ContentPlaceHolderID="m_footer"runat="server"〉  〈p〉版权所有〈/p〉  〈/asp:ContentPlaceHolder〉  〈/div〉  〈/form〉  〈/body〉  〈/html〉

我们也可以通过 CSC 把基类文件编译成 DLL 放在 bin 目录下,或者将 .cs 文件放在 App_Code 目录下,然后指令中省略 Src。

ASP.NET网页模板内容文件代码:

〈%@PageLanguage="C#"MasterPageFile="  MasterPage1.master"Title="首页"%〉  〈%@MasterTypeTypeName="  MasterPageNameSpace.MasterPageClass"%〉  〈scriptrunat="server"〉  protectedvoidPage_Load(objectsender,EventArgse)  {  Master.SetCurNavItem(0);  }  〈/script〉  〈asp:ContentID="content"runat="  server"ContentPlaceHolderID="m_content"〉  〈p〉这里是首页的内容〈/p〉  〈/asp:Content〉

到此,关于“如何在ASP.NET网页模版中对内容页访问母版页的资源”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

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

AI