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

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

  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脚本方法:

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

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

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

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

时间: 2024-10-10 00:17:00

关于自定义控件中引入js脚本的相关文章

使用Maven构建Java Web项目时,关于jsp中引入js、css文件路径问题。

今天有点闲,自己动手搭建一个Java Web项目,遇到jsp中引入js.css文件时路径不正确的问题,于是在网上查阅了很多资料,最终都无法解决问题,于是,上stackoverflow找到了解决方法,这里不得不吐槽一下国内资料的可信度,不说了,以后遇到问题尽量还是google吧,花点钱买个vpn值了,生命有限,节约时间. 下面记录下解决方法吧: 首先,确保jsp引入了jstl:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" pr

yii 中引入js 和css 的方式

在yii中 我们需要引入css 和 js 的时候,yii 自身有需要的类. 当我在views 视图层中引入css 和 js , <?php Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl .'/css/articleIndex.css');?> <?php Yii::app()->clientScript->registerScriptFile(Yii::app()->base

页面中引入js的几种方法

通常大家最为熟悉的是一下两种方法: 在页面中直接写入<script type="text/javascript">js代码</script>. 在页面中引入外部文件<script src="xx.js"></script>. 下面再介绍几种页面引入js的代码: 在js中引入外部js,通过document.wirite("scr"+"ipt src='xx.js'></scr&q

JSP中引入js文件

1. 引入的js文件代码执行出错        排查方法:将引入的js文件中的代码直接放到jsp中<script></script>标签内,使用浏览器访问,如果出错,则为js 代码存在问题 2. 如果步骤一中未出错,但引入时报错,则有两种可能 引入Js的指令有错误 引入的Js的编码格式与当前页面不匹配 1) 引入Js的指令有错误     |-source     |    |     |    ---js     |      |     |      ---base.js    

js中引入js

第一个js文件(被引入的js文件),文件名one.js,内容如下 function alertInOne(){    alert('in one');} 第二个js文件,文件名two.js,内容如下 //注意这个地方document.write("<script language='javascript' src='one.js'></script>");function alertInTwo(){    alert("in Two");}

iOS:在OC中调用JS脚本:示例一

1.首先导入JavaScriptCore.framework这个框架 2.创建webView.设置代理.请求手机端百度 #import "ViewController.h" #import <JavaScriptCore/JavaScriptCore.h> #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width #define SCREEN_HEIGHT [UIScreen mainScreen].bound

HTML中引入JS

首先,将脚本链接插入HTML代码中: 如图所示: 需要注意的是,js文件中的代码是没有javascript框架的. <span style="font-size:18px;"> //js框架 <script language="javascript" type="text/javascript"> </script></span>

在c#中运行js脚本(将js文件生成为.dll文件)

原文链接:http://www.cnblogs.com/xhan/archive/2010/10/22/1857992.html 前言: 本来在搞一个Google翻译的接口--向Google翻译发送请求--返回翻译数据... 结果发现发送请求中的一个参数(tk)是需要验证的,验证不通过,报403错误... 网上搜到一个可以自己生成tk值的方法,不过是js写的...省事的想将js代码直接拿来用... 就看到了博客中的一个例子... 0-- function b(a, b) { for (var d

js出现红叉怎么办 解决办法 在eclisp中引入js(JavaScript )文件出现红叉解决办法

js文件引入eclipse工程出现红叉 原因: 这是Eclipse或者MyEclipse校验失败的错误,不影响程序正常执行. 解决办法: 1.可以不管,如果不影响使用,eclipse对js校验不太准: 2.运行程序,没有问题,别管了,有问题就换一个: 3.clean project: 5.如果是myeclipse,选中js文件,右键Myeclipse--ManaValidation--ExcludeResource--(选中全部或者那个js)--OK: 操作后还出现红叉,那就clean一下工程,