首页 新闻 搜索 专区 学院

关于自定义控件中引入js脚本

0
[已解决问题] 解决于 2013-05-03 10:36

自己写了一个自定义控件的工程,工程名为TestControls,自定义控件的内容为:

 1 namespace TestControls
2 {
3 public class TestBoxControl : Control
4 {
5 private string textValue = "コピー";
6
7 [Description("ボタンのテキスト値")]
8 [Browsable(true)]
9 public virtual string TextValue
10 {
11 set { textValue = value; }
12 }
13 protected override void Render(HtmlTextWriter writer)
14 {
15 writer.Write("<input id=\"TextInput\" type=\"text\"/>");
16 writer.Write("<input id=\"Copy\" type=\"button\" value='" + textValue + "' onclick =\"copy();\"/>");
17 writer.Write("<input id=\"TextWrite\" type=\"text\" readonly=\"readonly\"/>");
18 base.Render(writer);
19 }
20 }


其中的copy方法是javascript脚本方法:

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

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

有另外一个工程Test,引入了TestContrls.dll,现在要引入TestBoxControl控件。但是脚本方法copy()怎样才能调用得到呢?

飞~翔的主页 飞~翔 | 初学一级 | 园豆:149
提问于:2011-11-09 18:30
< >
分享
最佳答案
0

要引入js脚本的步骤有:

1.编写js脚本,并且设置js文件的属性为:嵌入的资源(如下图所示)

2.在自定义控件的开头写上

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

注意:TestControl.JavaScript.js中TestControl为js所在的文件夹的名字,由于我的程序集的默认命名空间为空,因此此处为TestControl.JavaScript.js。如果默认命名控件不为空,则应该加上。格式为:默认命名控件.js所在的文件夹名.js文件名。

 

3.在自定义控件中OnPreRender中引入js脚本

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引入失败。

飞~翔 | 初学一级 |园豆:149 | 2013-05-03 10:35
其他回答(1)
-1

你的js脚本要TestBoxControl 中注册到页面上面,就可以在包含TestBoxControl 的页面直接调用copy方法了。对于js脚本你要嵌入到dll中去

小小刀 | 园豆:1991 (小虾三级) | 2011-11-09 21:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册