自定义WEB控件中嵌入JS文件ASP.NET

news/2024/7/10 20:17:45 标签: ASP.net, .net, Web, ASP, JavaScript
ASP.NET自定义WEB控件中嵌入JS文件
一直想做一些自定义控件,能进行一些UI上的验证.于是就需要使用到嵌入的JS文件.

找了一些资料,找了些例子,发现不行,首先把JS文 件设为嵌入资源是都有说的,
但[assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]中SYJ0的说明就不一样了.有的说是命名空间,有的说是项目名.都不是很正确.

原因分析:这些资料基本上所说都是建立的项目和命名空间相同.所以可能不会遇到问题.然而我建立的项目是不同的项目名.
如:我建立的控件库项目名为WebCtrls,然后修改了项目的默认命名空间为SYJ0.而在代码中的命名空间使用了SYJ... .net/editor/images/smilies/default/10.gif" alt="" />(有点混乱).
所以使用网上找的一些例子就是运行不了,要么没反应,要么提示出错...

最后解决:
[assembly: WebResource("SYJ0.dir0.js1.js", "application/x-javascript", PerformSubstitution = true)]中SYJ0应该是项目属性窗口的那个默认命名空间名称.
后面跟JS文件的路径.如SYJ0.dir0.js1.js表示,默认命名空间SYJ0下面的dir0目录下的js1.js文件.
当然 this.Page.ClientScript.RegisterClientScriptResource(this.GetType(), "SYJ0.dir0.js1.js");这句也不要写错了.

请注意大小写,没有测试是否区分大小写,还是注意一下.


下面是一完整的控件库项目的例子:
[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内容换成如上的内容,再在项目下直接建立一个JScript.js文件,再直接建立一个文件夹dir0,在dir0建立一个js1.js文件,内容分别如上所述.
编译一下,然后转到WEB项目的ASPX页面中,此时打开工具箱,应该会显示出我们创建的自定义控件STextBox.直接拖一个到页面,CTRL+F5执行,点击输入框看效果.


http://www.niftyadmin.cn/n/1126806.html

相关文章

centos下的php编译安装

为什么80%的码农都做不了架构师?>>> 准备 下载:http://php.net/downloads.php 下载 php-5.5.30.tar.gz 的文件 系统环境 根据需要的基本功能模块,需要准备以下软件 centos配置yum源后yum更新 yum -y install autoconf automake …

Sql Server 2000自定义分页

Sql Server 2000自定义分页 Sql Server 2000自定义分页 目前我们采用的翻页处理通常都是采用DataGrid默认的分页,这种方式虽然只用绑定当前页的数据,但是他从数据库返回的数据集仍然是整个数据集,这样,如果查询返回的是一个大数据量的数据集,那么在翻页过程将会很耗时,因为他浪…

IIS主机头作用及设置方法

IIS主机头作用及设置方法由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS5中,我们可能通过简单的设置达到这个目标。在IIS中,每个 Web 站点都具有唯一的、由三个部分组成的标识,用来接收和响应请求&a…

什么是主机头|主机头介绍

主机头是绑定域名,没有域名不用设置主机头,所谓的主机头的叫法起自IIS中对域名绑定的功能,一般的web服务器一个ip地址的80端口只能正确对应一个网站,处理一个域名的访问请求。而web服务器在不使用多个ip地址和端口的情况下,如果需…

Android学习之SQLite学习

花了2天时间,系统学习了下Android开发过程中使用的轻量级数据库SQLite的使用。并掌握其增,删,该,查的基本数据库操作。 首先要使用SQLite数据库,须要通过Android系统提供的SQLiteOpenHelper的帮助类,通过这…

Struts2表单验证

2019独角兽企业重金招聘Python工程师标准>>> Struts2表单验证自动返回界面 LoginAction.java package hello.com; import antlr.collections.List; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class Login…

重启Zabbix服务提示缺少libmysqlclient.so.18解决方法

在重启Zabbix3.2.7服务时,出现了以下错误原因是缺少了mysql的库文件,提示没有那个文件或目录。之前装的是mysql5.5版本的数据库,库路径为/usr/local/mysql55/lib/libmysqlclient.so.18,现在只需把库路径添加到/etc/ld.so.conf配置…

[转载] 程序员喝酒喝出的计算机文化

大家喝的是啤酒。这时你入座了。 你给自己倒了杯可乐,这叫低配置。 你给自已倒了杯啤酒,这叫标准配置。 你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。 你给自己倒了杯可乐,还滴了几滴醋,不仅颜色…