关于自定义控件中引入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引入失败。

相关文章
相关标签/搜索