[导入]Asp.net中动态在中加入Scrpit标签
生活随笔
收集整理的這篇文章主要介紹了
[导入]Asp.net中动态在中加入Scrpit标签
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
許久以前,寫過一篇《asp.net頁中動(dòng)態(tài)加入樣式表文件》,后來發(fā)現(xiàn)在使用時(shí)如果每頁都寫這么個(gè)函數(shù)真是很麻煩,于是自己寫了一個(gè)Page的派生。將這個(gè)函數(shù)加了進(jìn)去。
??????/**////?<summary>
????///?作者?鄒健
????///?日期?20070202
????///?重載的Page類。
????///?</summary>
????public?class?ChPage?:?Page?{
????????/**////?<summary>
????????///?構(gòu)造函數(shù)。
????????///?</summary>
????????public?ChPage()?{?}
????????/**////?<summary>
????????///?Render函數(shù)。
????????///?</summary>
????????///?<param?name="writer">HtmlTextWriter。</param>
????????protected?override?void?Render(HtmlTextWriter?writer)?{
????????????if?(writer?is?System.Web.UI.Html32TextWriter)?{
????????????????writer?=?new?FormFixerHtml32TextWriter(writer.InnerWriter);
????????????}
????????????else?{
????????????????writer?=?new?FormFixerHtmlTextWriter(writer.InnerWriter);
????????????}
????????????base.Render(writer);
????????}
????????/**////?<summary>
????????///?設(shè)置Html標(biāo)簽內(nèi),的Link標(biāo)簽,如Css
????????///?</summary>
????????///?<param?name="cssfile">Css文件。</param>
????????protected?void?SetHtmlLink(string?cssfile)?{
????????????HtmlLink?myHtmlLink?=?new?HtmlLink();
????????????myHtmlLink.Href?=?cssfile;
????????????myHtmlLink.Attributes.Add("rel",?"stylesheet");
????????????myHtmlLink.Attributes.Add("type",?"text/css");
????????????Page.Header.Controls.Add(myHtmlLink);
????????}
????????/**////?<summary>
????????///?該函數(shù)可獲得web.config中的字符串。
????????///?</summary>
????????///?<param?name="Str">指定項(xiàng)的鍵值。</param>
????????///?<returns>返回鍵值所指的值。</returns>
????????protected?string?GetString(string?Str)?{
????????????return?System.Configuration.ConfigurationManager.AppSettings[Str];
????????}
????}
但是后來發(fā)現(xiàn)在使用asp.net編程時(shí),如果應(yīng)用模板頁的話,不止是css文件不容易后往里添,javascript文件也是如此,雖然說在模板頁的<head />中建一個(gè)contentplaceholder也算可以,但那種方法畢竟不太雅,有失風(fēng)范。于是就想按這種添加<link />標(biāo)簽的方法來泡制<script />
但發(fā)現(xiàn)在System.Web.UI.HtmlControls中有HtmlLink來表現(xiàn)<link />但卻沒有表現(xiàn)<Script />標(biāo)簽的類。
沒辦法了,因?yàn)閼兴灾荒茏约簩懸粋€(gè)了,代碼不長,如下。
namespace?Chsword.Class?{
????///?<summary>
????///?可以生成script標(biāo)簽
????///?</summary>
????[ControlBuilder(typeof(HtmlEmptyTagControlBuilder)),?AspNetHostingPermission(SecurityAction.InheritanceDemand,?Level?=?AspNetHostingPermissionLevel.Minimal),?AspNetHostingPermission(SecurityAction.LinkDemand,?Level?=?AspNetHostingPermissionLevel.Minimal)]
????public?class?HtmlScript?:?HtmlControl?{
????????//?Methods
????????public?HtmlScript()
????????????:?base("script")?{
????????}
????????protected?override?void?Render(HtmlTextWriter?writer)?{
????????????writer.WriteBeginTag(this.TagName);
????????????this.RenderAttributes(writer);
????????????writer.Write(">");
????????????writer.WriteEndTag(TagName);
????????}
????????protected?override?void?RenderAttributes(HtmlTextWriter?writer)?{
????????????if?(!string.IsNullOrEmpty(this.Src))?{
????????????????base.Attributes["src"]?=?base.ResolveClientUrl(this.Src);
????????????}
????????????base.Attributes["type"]?=?"text/javascript";
????????????base.RenderAttributes(writer);
????????}
????????///?<summary>
????????///?腳本的URL
????????///?</summary>
????????[UrlProperty]
????????[DefaultValue("")]
????????[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
????????public?virtual?string?Src?{
????????????get?{
????????????????string?text?=?base.Attributes["src"];
????????????????if?(text?==?null)?{
????????????????????return?string.Empty;
????????????????}
????????????????return?text;
????????????}
????????????set?{
????????????????base.Attributes["src"]?=?MapStringAttributeToString(value);
????????????}
????????}
????????string?MapStringAttributeToString(string?s)?{
????????????if?((s?!=?null)?&&?(s.Length?==?0))?{
????????????????return?null;
????????????}
????????????return?s;
????????}
????}
}
隨后我又在原來重 寫的ChPage類中添加了一個(gè)函數(shù)
????????///?<summary>
????????///?設(shè)置script現(xiàn)在只能是type=text/javsscript的
????????///?</summary>
????????///?<param?name="src">腳本地址</param>
????????protected?void?SetHtmlScript(string?src)?{
????????????HtmlScript?myHtmlScript?=?new?HtmlScript();
????????????myHtmlScript.Src?=?src;
????????????Page.Header.Controls.Add(myHtmlScript);
????????}
使用方法
原來的頁面腳本是這樣的
vb.net
Partial?Class?DefaultClass?Default
????Inherits?Page C#應(yīng)該類似Default : Page
現(xiàn)在只要改成
Partial?Class?DefaultClass?Default
????Inherits?ChPage C#相應(yīng)為 Default:ChPage
就可以了
使用時(shí)只要在載入前的某個(gè)事件,比如Init或Load寫 SetHtmlScript("/Javascript/MicrosoftAjax.js")
這樣就OK了
?
直接再看看生成的HTML,吼吼,已經(jīng)有你添加的<script src=""/Javascript/MicrosoftAjax.js" type="text/javascript"></script>了
本如果文章中有不足的地方請大家要提出啊
文章來自chsword[鄒健的博客]允許轉(zhuǎn)載麻煩留言
鄒健 2007-08-01 12:47 發(fā)表評論
文章來源:http://www.cnblogs.com/chsword/archive/2007/08/01/838870.html
??????/**////?<summary>
????///?作者?鄒健
????///?日期?20070202
????///?重載的Page類。
????///?</summary>
????public?class?ChPage?:?Page?{
????????/**////?<summary>
????????///?構(gòu)造函數(shù)。
????????///?</summary>
????????public?ChPage()?{?}
????????/**////?<summary>
????????///?Render函數(shù)。
????????///?</summary>
????????///?<param?name="writer">HtmlTextWriter。</param>
????????protected?override?void?Render(HtmlTextWriter?writer)?{
????????????if?(writer?is?System.Web.UI.Html32TextWriter)?{
????????????????writer?=?new?FormFixerHtml32TextWriter(writer.InnerWriter);
????????????}
????????????else?{
????????????????writer?=?new?FormFixerHtmlTextWriter(writer.InnerWriter);
????????????}
????????????base.Render(writer);
????????}
????????/**////?<summary>
????????///?設(shè)置Html標(biāo)簽內(nèi),的Link標(biāo)簽,如Css
????????///?</summary>
????????///?<param?name="cssfile">Css文件。</param>
????????protected?void?SetHtmlLink(string?cssfile)?{
????????????HtmlLink?myHtmlLink?=?new?HtmlLink();
????????????myHtmlLink.Href?=?cssfile;
????????????myHtmlLink.Attributes.Add("rel",?"stylesheet");
????????????myHtmlLink.Attributes.Add("type",?"text/css");
????????????Page.Header.Controls.Add(myHtmlLink);
????????}
????????/**////?<summary>
????????///?該函數(shù)可獲得web.config中的字符串。
????????///?</summary>
????????///?<param?name="Str">指定項(xiàng)的鍵值。</param>
????????///?<returns>返回鍵值所指的值。</returns>
????????protected?string?GetString(string?Str)?{
????????????return?System.Configuration.ConfigurationManager.AppSettings[Str];
????????}
????}
但是后來發(fā)現(xiàn)在使用asp.net編程時(shí),如果應(yīng)用模板頁的話,不止是css文件不容易后往里添,javascript文件也是如此,雖然說在模板頁的<head />中建一個(gè)contentplaceholder也算可以,但那種方法畢竟不太雅,有失風(fēng)范。于是就想按這種添加<link />標(biāo)簽的方法來泡制<script />
但發(fā)現(xiàn)在System.Web.UI.HtmlControls中有HtmlLink來表現(xiàn)<link />但卻沒有表現(xiàn)<Script />標(biāo)簽的類。
沒辦法了,因?yàn)閼兴灾荒茏约簩懸粋€(gè)了,代碼不長,如下。
namespace?Chsword.Class?{
????///?<summary>
????///?可以生成script標(biāo)簽
????///?</summary>
????[ControlBuilder(typeof(HtmlEmptyTagControlBuilder)),?AspNetHostingPermission(SecurityAction.InheritanceDemand,?Level?=?AspNetHostingPermissionLevel.Minimal),?AspNetHostingPermission(SecurityAction.LinkDemand,?Level?=?AspNetHostingPermissionLevel.Minimal)]
????public?class?HtmlScript?:?HtmlControl?{
????????//?Methods
????????public?HtmlScript()
????????????:?base("script")?{
????????}
????????protected?override?void?Render(HtmlTextWriter?writer)?{
????????????writer.WriteBeginTag(this.TagName);
????????????this.RenderAttributes(writer);
????????????writer.Write(">");
????????????writer.WriteEndTag(TagName);
????????}
????????protected?override?void?RenderAttributes(HtmlTextWriter?writer)?{
????????????if?(!string.IsNullOrEmpty(this.Src))?{
????????????????base.Attributes["src"]?=?base.ResolveClientUrl(this.Src);
????????????}
????????????base.Attributes["type"]?=?"text/javascript";
????????????base.RenderAttributes(writer);
????????}
????????///?<summary>
????????///?腳本的URL
????????///?</summary>
????????[UrlProperty]
????????[DefaultValue("")]
????????[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
????????public?virtual?string?Src?{
????????????get?{
????????????????string?text?=?base.Attributes["src"];
????????????????if?(text?==?null)?{
????????????????????return?string.Empty;
????????????????}
????????????????return?text;
????????????}
????????????set?{
????????????????base.Attributes["src"]?=?MapStringAttributeToString(value);
????????????}
????????}
????????string?MapStringAttributeToString(string?s)?{
????????????if?((s?!=?null)?&&?(s.Length?==?0))?{
????????????????return?null;
????????????}
????????????return?s;
????????}
????}
}
隨后我又在原來重 寫的ChPage類中添加了一個(gè)函數(shù)
????????///?<summary>
????????///?設(shè)置script現(xiàn)在只能是type=text/javsscript的
????????///?</summary>
????????///?<param?name="src">腳本地址</param>
????????protected?void?SetHtmlScript(string?src)?{
????????????HtmlScript?myHtmlScript?=?new?HtmlScript();
????????????myHtmlScript.Src?=?src;
????????????Page.Header.Controls.Add(myHtmlScript);
????????}
使用方法
原來的頁面腳本是這樣的
vb.net
Partial?Class?DefaultClass?Default
????Inherits?Page C#應(yīng)該類似Default : Page
現(xiàn)在只要改成
Partial?Class?DefaultClass?Default
????Inherits?ChPage C#相應(yīng)為 Default:ChPage
就可以了
使用時(shí)只要在載入前的某個(gè)事件,比如Init或Load寫 SetHtmlScript("/Javascript/MicrosoftAjax.js")
這樣就OK了
?
直接再看看生成的HTML,吼吼,已經(jīng)有你添加的<script src=""/Javascript/MicrosoftAjax.js" type="text/javascript"></script>了
本如果文章中有不足的地方請大家要提出啊
文章來自chsword[鄒健的博客]允許轉(zhuǎn)載麻煩留言
鄒健 2007-08-01 12:47 發(fā)表評論
文章來源:http://www.cnblogs.com/chsword/archive/2007/08/01/838870.html
轉(zhuǎn)載于:https://www.cnblogs.com/wallis0922/archive/2007/08/28/872321.html
總結(jié)
以上是生活随笔為你收集整理的[导入]Asp.net中动态在中加入Scrpit标签的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。