關於自定義控件中引入js腳本

本身寫了一個自定義控件的工程,工程名爲TestControls,自定義控件的內容爲:javascript

  namespace TestControls
  {
      public class TestBoxControl : Control
      {
         private string textValue = "コピー";
  
          [Description("ボタンのテキスト値")]
          [Browsable(true)]
          public virtual string TextValue
          {
              set { textValue = value; }
          }
          protected override void Render(HtmlTextWriter writer)
          {
              writer.Write("<input id=\"TextInput\" type=\"text\"/>");
              writer.Write("<input id=\"Copy\" type=\"button\" value='" + textValue + "' onclick =\"copy();\"/>");
              writer.Write("<input id=\"TextWrite\" type=\"text\" readonly=\"readonly\"/>");
             base.Render(writer);
          }
  }

其中的copy方法是javascript腳本方法:java

function copy() {
     var textInputValue = document.getElementById("TextInput").value;
     document.getElementById("TextWrite").value = textInputValue;
 }

腳本名字是Textbox.js,且在TestControls工程中。ide

有另一個工程Test,引入了TestContrls.dll,如今要引入TestBoxControl控件。可是腳本方法copy()怎樣才能調用獲得呢?this

 

要引入js腳本的步驟有:spa

1.編寫js腳本,而且設置js文件的屬性爲:嵌入的資源(以下圖所示)code

2.在自定義控件的開頭寫上blog

"[assembly: System.Web.UI.WebResource("TestControl.JavaScript.js", "text/javascript")]"以下圖:ip

注意:TestControl.JavaScript.js中TestControl爲js所在的文件夾的名字,因爲個人程序集的默認命名空間爲空,所以此處爲TestControl.JavaScript.js。若是默認命名控件不爲空,則應該加上。格式爲:默認命名控件.js所在的文件夾名.js文件名。資源

 

3.在自定義控件中OnPreRender中引入js腳本get

1 protected override void OnPreRender(EventArgs e)
2        {
3              if (this.Page != null)
4              {
5                  this.Page.ClientScript.RegisterClientScriptResource(typeof(TestControl), "TestControl.JavaScript.js");
6              }
7              base.OnPreRender(e);
8          }

注意,此處的js文件名的寫法,能夠用reflector打開當前編寫的dll查看,以確保js名的正確性。

最後如何查看js的引入是否正確呢?

啓動調用當前自定義控件的頁面,在vs中能夠看到如圖所示

點擊此處可現實就是源碼。若是此處顯示script block,點擊後打開的是空白的,則表示js引入失敗。

相關文章
相關標籤/搜索