Asp.net中动态在中加入Scrpit标签
生活随笔
收集整理的這篇文章主要介紹了
Asp.net中动态在中加入Scrpit标签
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
許久以前,寫過一篇《asp.net頁中動態加入樣式表文件》,后來發現在使用時如果每頁都寫這么個函數真是很麻煩,于是自己寫了一個Page的派生。將這個函數加了進去。
??????/**////?<summary>
????///?作者?鄒健
????///?日期?20070202
????///?重載的Page類。
????///?</summary>
????public?class?ChPage?:?Page?{
????????/**////?<summary>
????????///?構造函數。
????????///?</summary>
????????public?ChPage()?{?}
????????/**////?<summary>
????????///?Render函數。
????????///?</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>
????????///?設置Html標簽內,的Link標簽,如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>
????????///?該函數可獲得web.config中的字符串。
????????///?</summary>
????????///?<param?name="Str">指定項的鍵值。</param>
????????///?<returns>返回鍵值所指的值。</returns>
????????protected?string?GetString(string?Str)?{
????????????return?System.Configuration.ConfigurationManager.AppSettings[Str];
????????}
????}
但是后來發現在使用asp.net編程時,如果應用模板頁的話,不止是css文件不容易后往里添,javascript文件也是如此,雖然說在模板頁的<head />中建一個contentplaceholder也算可以,但那種方法畢竟不太雅,有失風范。于是就想按這種添加<link />標簽的方法來泡制<script />
但發現在System.Web.UI.HtmlControls中有HtmlLink來表現<link />但卻沒有表現<Script />標簽的類。
沒辦法了,因為懶所以只能自己寫一個了,代碼不長,如下。
namespace?Chsword.Class?{
????///?<summary>
????///?可以生成script標簽
????///?</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類中添加了一個函數
????????///?<summary>
????????///?設置script現在只能是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#應該類似Default : Page
現在只要改成
Partial?Class?DefaultClass?Default
????Inherits?ChPage C#相應為 Default:ChPage
就可以了
使用時只要在載入前的某個事件,比如Init或Load寫 SetHtmlScript("/Javascript/MicrosoftAjax.js")
這樣就OK了
?
直接再看看生成的HTML,吼吼,已經有你添加的<script src=""/Javascript/MicrosoftAjax.js" type="text/javascript"></script>了
本如果文章中有不足的地方請大家要提出啊
文章來自chsword[鄒健的博客]允許轉載麻煩留言
??????/**////?<summary>
????///?作者?鄒健
????///?日期?20070202
????///?重載的Page類。
????///?</summary>
????public?class?ChPage?:?Page?{
????????/**////?<summary>
????????///?構造函數。
????????///?</summary>
????????public?ChPage()?{?}
????????/**////?<summary>
????????///?Render函數。
????????///?</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>
????????///?設置Html標簽內,的Link標簽,如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>
????????///?該函數可獲得web.config中的字符串。
????????///?</summary>
????????///?<param?name="Str">指定項的鍵值。</param>
????????///?<returns>返回鍵值所指的值。</returns>
????????protected?string?GetString(string?Str)?{
????????????return?System.Configuration.ConfigurationManager.AppSettings[Str];
????????}
????}
但是后來發現在使用asp.net編程時,如果應用模板頁的話,不止是css文件不容易后往里添,javascript文件也是如此,雖然說在模板頁的<head />中建一個contentplaceholder也算可以,但那種方法畢竟不太雅,有失風范。于是就想按這種添加<link />標簽的方法來泡制<script />
但發現在System.Web.UI.HtmlControls中有HtmlLink來表現<link />但卻沒有表現<Script />標簽的類。
沒辦法了,因為懶所以只能自己寫一個了,代碼不長,如下。
namespace?Chsword.Class?{
????///?<summary>
????///?可以生成script標簽
????///?</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類中添加了一個函數
????????///?<summary>
????????///?設置script現在只能是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#應該類似Default : Page
現在只要改成
Partial?Class?DefaultClass?Default
????Inherits?ChPage C#相應為 Default:ChPage
就可以了
使用時只要在載入前的某個事件,比如Init或Load寫 SetHtmlScript("/Javascript/MicrosoftAjax.js")
這樣就OK了
?
直接再看看生成的HTML,吼吼,已經有你添加的<script src=""/Javascript/MicrosoftAjax.js" type="text/javascript"></script>了
本如果文章中有不足的地方請大家要提出啊
文章來自chsword[鄒健的博客]允許轉載麻煩留言
總結
以上是生活随笔為你收集整理的Asp.net中动态在中加入Scrpit标签的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言菱形是怎么实现的?
- 下一篇: 薪酬管理的特点和注意事项[转]