ZenOven's Archivers

From zenoven on 2010-08-19 04:15:24

ASP.NET使用母版页后动态加载JS/CSS

ASP.NET中使用母版页最大的好处就是当有许多相似的页面时只用加一个母版页,每个页面用这个母版页生成内容页,然后根据情况修改每个内容页中的内容,保持页面布局的统一,同时也减少了代码量。

但另一个突出的问题是使用母版页后,每个内容页中没有了<head></head>标记,因为这都在母版页中有了,而这对修改标题、加载JS/CSS等文件都有影响,前面我已经说过在ASP.NET中使用母版页后统一网页标题,那这篇就来说说如何加载JS/CSS等文件。

ASP.NET中使用母版页后统一网页标题中修改标题的原理一样,加载JS/CSS等文件可以在内容页中加,也可以在母版页中统一加载。

1、在单个内容页中加载


将下面两段段代码放入内容页的Page_Load中即可,很简单了,也不再多解释。

[code lang="csharp"]
#region 加载JS文件
HtmlGenericControl JSControl = new HtmlGenericControl("script");
JSControl.Attributes.Add("type", "text/javascript");
JSControl.Attributes.Add("src", "JS/js.js");
Page.Header.Controls.Add(JSControl);
#endregion
[/code]

[code lang="csharp"]
HtmlLink CssControl = new HtmlLink();
CssControl.Href = "/CSS/Style.css";
CssControl.Attributes.Add("rel", "stylesheet");
CssControl.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(CssControl);
[/code]

2、在母版页中统一加载


[code lang="csharp"]
string requestContentType = this.ContentPlaceHolder1.Page.GetType().ToString();
if (requestContentType == "ASP.admin_c2c_user_management_aspx")//获取请求的内容页类型,格式如ASP.目录名_文件名_aspx(好像文件名中的“-”都会被转换成了“_”)
{
//加载JS文件
HtmlGenericControl JSControl = new HtmlGenericControl("script");
JSControl.Attributes.Add("type","text/javascript");
JSControl.Attributes.Add("src", "JS/js.js");
Page.Header.Controls.Add(JSControl);
// 加载CSS文件
HtmlLink CssControl = new HtmlLink();
CssControl.Href = "/CSS/Style.css";
CssControl.Attributes.Add("rel", "stylesheet");
CssControl.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(CssControl);
}
[/code]

查看完整版本: ASP.NET使用母版页后动态加载JS/CSS

From 阅网博客 on 2010-08-19 07:35:22

:(4): :(4): 没用过dotnet

From ifenwen on 2010-08-19 07:44:29

有点复杂

From 园子 on 2010-08-19 09:52:10

ASP.NET 用着不是很熟练。

From 飞晏 on 2010-08-19 11:43:03

现在.NET里面使用母版页的页面有两个控件,第一个就是在页面中添加和中间的信息,可以实现不同的页面使用不同的JS

From lenomon on 2010-08-19 12:26:35

还好,看得懂!! :(1):

From 小邪 on 2010-08-19 14:41:16

额,一般这个语言配什么数据库的? access还是mssql?

From zwwooooo on 2010-08-19 15:07:40

对asp一窍不通

From 自由人 on 2010-08-19 16:41:58

这个可以用的~~ :(1):

From 自由人 on 2010-08-19 16:42:05

其实很easy的

From 自由人 on 2010-08-19 16:42:17

用着用着就熟了~~ :(4):

From 自由人 on 2010-08-19 16:42:37

:(2): 好像没看明白

From 自由人 on 2010-08-19 16:43:20

呵呵,这几行很简单的,一看就懂

From 自由人 on 2010-08-19 16:43:34

都可以的,MSSQL多些吧

From 自由人 on 2010-08-19 16:44:20

我最初搞这个其实是被动的。。。 :(8):

From 飞晏 on 2010-08-19 16:54:24

就是模板面中的区域有一个,区域有 。这样使用模板页面的时候就可以分别在head和body添加内容了

From 飞晏 on 2010-08-19 16:55:53

就是母版页中的head区域有一个asp:ContentPlaceHolder id="head" runat="server",body区域有asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server" 。这样使用母版页的时候就可以分别在head和body添加内容了

From 自由人 on 2010-08-19 17:27:00

嗯,我最开始就这样搞的,在VS2005里会提示无法识别的标记前缀,但实际能用,08里好像他就给你在head中自动加了个contentplaceholder

From 北街 on 2010-08-19 17:28:17

代码万岁~ :(16):

From 云崧 on 2010-08-19 19:49:07

这个专业了,我是非技术流,不大懂。

From 记忆盒子 on 2010-08-20 12:29:49

.net用了好几年,身边没人说过"母版页"的名词,汗. 母版页就是"asp叉"页吧?我们都说在"asp叉"页添加某某控件.在"cs"页编写某某事件代码.

From 自由人 on 2010-08-20 13:43:28

哈哈~~万岁~~

From 自由人 on 2010-08-20 13:44:47

嗯嗯,这个记录下,方便以后参考

From 自由人 on 2010-08-20 13:47:00

:(2): 不是啊。。。母版页的后缀是.Master ,用一个母版页可以生成很多内容页,内容页的后缀是.aspx

From laowi on 2010-08-20 16:57:00

完全不懂的人路过打酱油

From 先看看 on 2010-08-20 18:30:48

我也想这样做

From 记忆盒子 on 2010-08-20 18:59:25

刚看了下,原来.net2005后引进了"母版",汗!一直没有用过这个,.net2003用的多,项目也没有升级到.net2005或者.net2008. 然后又搞java什么的,看来真的跟不上知识更新的步伐呀!!!不过,更大原因是自己不去学习吧,哎..................net2005和.net2008学习中!

From 蛋卷 on 2010-08-20 20:53:06

这个看以看不懂

From Mars on 2010-08-21 06:31:58

.net就是强大,什么都是现成的。

From 学夫子 on 2010-08-21 12:16:52

外行看热闹了,哈哈,看不懂的

From 自由人 on 2010-08-21 14:29:49

呵呵,我最开始用05的时候也没注意,然后做页面的时候发现很多页面就中间的一块内容不同,其他都一样,这才想起看书的时候有母版页

From 自由人 on 2010-08-21 14:30:41

加油!只要想懂,没什么搞不懂的 :(1):

From 自由人 on 2010-08-21 14:30:53

那就这样做呗~~ :(4):

From 自由人 on 2010-08-21 14:32:01

学了.NET就懂啦~~ :(16):

From 自由人 on 2010-08-21 14:32:37

嗯,.NET确实比较易于上手

From 自由人 on 2010-08-21 14:33:11

哈哈,学了就懂啦~ :(17):

From 番薯窝 on 2010-08-21 14:48:07

说虽然是这样,但是实现起来就很困难了

From 自由人 on 2010-08-21 20:32:00

用的时候直接把代码粘过去就OK了~~

From joyla on 2010-08-23 20:30:03

这个我纯支持!

From 自由人 on 2010-08-25 16:16:09

拉住她~~ 赶紧,别让她跑啦~~

From joyla on 2010-08-25 17:13:21

没走 没走 这不还在吗?

From 大树 on 2010-10-05 02:13:49

半年没用母版页了,很怀念……

From maik on 2011-04-09 17:48:36

想问你一下,关于母版的问题,当我把母版设计好了后,左边有个a标签的导航,当点击a标签,就改变右边子页面的内容,同时a标签的样式我改变了一下,让它改为被选中状态,主要是用来达到醒目的效果。 但是当我真正把子页面写好后,点击a标签时,右边是切换到了a标签url指定的地址,但是由于回发到了服务器,a标签的样式被丢失了,请问大虾,有什么好注意么,不让子页面的刷新影响到a标签的样式??

From 自由人 on 2011-04-10 15:30:31

应该可以在母版页里判断下打开的是哪个内容页,然后给a标签设置样式,这个我也没有具体做过,只是有这么个思路,不知道好使不

From maik on 2011-04-11 08:45:51

呵呵,当子页面为空,然后应用该母版后,点击a链接,样式是可以改变的,当子页面里面有内容,就是子页面里有服务器组件时,它由于回发到服务器,把样式就恢复到了初始状态。。。

Tags: .NET, CSS, JS, 母版页


©ZenOven