`

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

阅读更多
ASP.NET自定义WEB控件中嵌入JS文件
一直想做一些自定义控件,能进行一些UI上的验证.于是就需要使用到嵌入的JS文件.

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

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

最后解决:
[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执行,点击输入框看效果.

分享到:
评论

相关推荐

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    17.3 asp.net ajax对服务器控件支持的基类 612 17.3.1 ajax控件支持的基类 612 17.3.2 ajax控件应用示例 623 17.4 本章总结 636 附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery .....

    如何封装JS和CSS文件为服务器端控件---ASP.NET 2.0

    如何封装JS和CSS文件为服务器端控件---ASP.NET 2.0 我们以封装一个JS的日期控件为列子,将它和服务器的TextBox结合在一起做成一个服务器控件,以达到直接托上去就可以使用的效果。其实很简单,大家共同学习。先看看...

    asp.net知识库

    在Asp.net中如何用SQLDMO来获取SQL Server中的对象信息 使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和...

    ASP.NET4高级程序设计(第4版) 3/3

    书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    17.3 asp.net ajax对服务器控件支持的基类 612 17.3.1 ajax控件支持的基类 612 17.3.2 ajax控件应用示例 623 17.4 本章总结 636 附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery .....

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    17.3 asp.net ajax对服务器控件支持的基类 612 17.3.1 ajax控件支持的基类 612 17.3.2 ajax控件应用示例 623 17.4 本章总结 636 附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery .....

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

     本书主要介绍asp.net的控件开发,书中通过70多个例子讲解了asp.net控件开发技术的各个方面,而且剖析了很多控件中系统基类源代码,读者从这些系统源代码可以体会设计模式思想。如果扎实地掌握了asp.net控件的运行...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    ASP.Net中有一些技术是有局限性的,传智播客根据这些技术在企业中的实际应用情况进行了调整、补充。比如项目中几乎没有在UI层直接访问数据库的,而是采用三层架构,因此我们不讲解UI层直连数据库的控件SQLDataSource...

    自定义控件嵌入Flash

    在没有IE中的“单击以激活并使用此控件”的情况下,将Flash插入页面。

    网管教程 从入门到精通软件篇.txt

    网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 ...JS:javascript源文件 JSP:HTML网页,其中包含有对一个Java servlet...

Global site tag (gtag.js) - Google Analytics