ASP.NET自定義WEB控件中嵌入JS文件
          一直想做一些自定義控件,能進行一些UI上的驗證.于是就需要使用到嵌入的JS文件.

          找了一些資料,找了些例子,發(fā)現(xiàn)不行,首先把JS文 件設(shè)為嵌入資源是都有說的,
          但[assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]中SYJ0的說明就不一樣了.有的說是命名空間,有的說是項目名.都不是很正確.

          原因分析:這些資料基本上所說都是建立的項目和命名空間相同.所以可能不會遇到問題.然而我建立的項目是不同的項目名.
          如:我建立的控件庫項目名為WebCtrls,然后修改了項目的默認命名空間為SYJ0.而在代碼中的命名空間使用了SYJ...(有點混亂).
          所以使用網(wǎng)上找的一些例子就是運行不了,要么沒反應(yīng),要么提示出錯...

          最后解決:
          [assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]中SYJ0應(yīng)該是項目屬性窗口的那個默認命名空間名稱.
          后面跟JS文件的路徑.如SYJ0.dir0.js1.js表示,默認命名空間SYJ0下面的dir0目錄下的js1.js文件.
          當(dāng)然 this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.dir0.js1.js");這句也不要寫錯了.

          請注意大小寫,沒有測試是否區(qū)分大小寫,還是注意一下.


          下面是一完整的控件庫項目的例子:
          [Class1.cs]
          using System;
          using System.Web.UI.WebControls;
          using System.Web.UI;

          [assembly: WebResource("SYJ0.JScript1.js", "application/x-javascript", PerformSubstitution = true)]
          [assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]

          namespace SYJ
          {
          public class STextBox : WebControl, INamingContainer
          {
          protected TextBox textBox = new TextBox();

          protected override void OnPreRender(EventArgs e)
          {
          this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.JScript1.js");
          this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.dir0.js1.js");
          base.OnPreRender(e);
          }
          protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
          {
          this.textBox.Attributes.Add("id", this.ID);
          this.textBox.Attributes.Add("onclick", "msg(this);showTime();");
          this.textBox.RenderControl(writer);
          }
          }
          }

          // JScript1.js
          function msg(obj)
          {
          alert("hello from web control s js file id["+obj.id+"]");
          }

          // dir0.js1.js
          function showTime()
          {
          alert(new Date());
          }

          使用方法:
          用VS2008建一個解決方案,建立一個默認WEB項目為WebApplication,再建一個庫項目.
          將庫項目的Class1.cs內(nèi)容換成如上的內(nèi)容,再在項目下直接建立一個JScript.js文件,再直接建立一個文件夾dir0,在dir0建立一個js1.js文件,內(nèi)容分別如上所述.
          編譯一下,然后轉(zhuǎn)到WEB項目的ASPX頁面中,此時打開工具箱,應(yīng)該會顯示出我們創(chuàng)建的自定義控件STextBox.直接拖一個到頁面,CTRL+F5執(zhí)行,點擊輸入框看效果.

          posted on 2010-11-27 21:13 sanmao 閱讀(673) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 澄城县| 都昌县| 津市市| 辉南县| 班玛县| 扬州市| 开江县| 松桃| 四平市| 开封县| 田林县| 岳普湖县| 淮南市| 太湖县| 松江区| 金坛市| 二连浩特市| 双牌县| 白河县| 南溪县| 丹阳市| 克什克腾旗| 广安市| 正阳县| 定州市| 美姑县| 锡林郭勒盟| 甘孜| 竹溪县| 隆林| 饶河县| 左贡县| 安达市| 宁陵县| 岳池县| 临夏县| 镇宁| 高邑县| 阿城市| 长春市| 舒城县|