在asp.net中创建具有javascript属性和方法的自定义控件

时间:2011-02-23 16:29:25

标签: jquery asp.net custom-controls

作为创建自定义控件的起点,我想创建一个只显示数字的控件。如果我们想象.ascx文件除了文字控件之外什么都不包含,并且后面的代码将值设置为1。

然后我希望能够做myControl.increment(); 这将运行一些增加文字控件值的javascript。

我可以在页面中注入一个javascript,例如伪代码:

page_load
{

  scriptything.register("function increment(x) { $('#myLiteral').increment(); });

}

或者其他东西,但那不是myControl.increment,只会是increment()。页面上有多个控件会搞砸它。

任何人都知道我如何实现将javascript与自定义控件耦合的目标?我问不可能吗?

2 个答案:

答案 0 :(得分:0)

是的,您希望将这样的JavaScript类开发视为一个示例(还有其他示例):http://www.howtocreate.co.uk/tutorials/javascript/objects

您可能真的想要开发ASP.NET AJAX控件,它集成了服务器端控件和AJAX功能。我开发了一些,我写了一些关于这个主题的文章:

对于JQuery,请使用:

HTH。

答案 1 :(得分:0)

很有可能。

我有一个CalledCustomControlLibrary类。

它包含几个包含图像和脚本的文件夹。您可以使用[assemply: WebResource]

添加这些类型的项目

IE

[assembly: WebResource("CustomControlLibrary.LeftRight.local_img.leftArrow.jpg", "img/jpg")]
[assembly: WebResource("CustomControlLibrary.LeftRight.local_img.rightArrow.jpg", "img/jpg")]
[assembly: WebResource("CustomControlLibrary.LeftRight.local_js.leftright.js", "application/javascript")]
[assembly: WebResource("CustomControlLibrary.global_js.jquery-1.3.2.js", "application/javascript")]
[assembly: WebResource("CustomControlLibrary.global_js.mousehold.js", "application/javascript")]

然后在类的onload事件中,您可以注册客户端脚本,如:

        string tsJQueryJS = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.global_js.jquery-1.3.2.js") ;
        string tsMousehold = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.global_js.mousehold.js");
        string tsLeftRightJS = Page.ClientScript.GetWebResourceUrl(this.GetType(), "CustomControlLibrary.LeftRight.local_js.leftright.js");

        if (!Page.ClientScript.IsClientScriptIncludeRegistered("JQuery" )) { Page.ClientScript.RegisterClientScriptInclude("JQuery", tsJQueryJS); }
        if (!Page.ClientScript.IsClientScriptIncludeRegistered("Mousehold")) { Page.ClientScript.RegisterClientScriptInclude("Mousehold", tsMousehold); }
        if (!Page.ClientScript.IsClientScriptIncludeRegistered("LefRightJS")) { Page.ClientScript.RegisterClientScriptInclude("LeftRightJS", tsLeftRightJS); }

整个控制只在课堂上进行。它继承了WebControl和IPOstBackDataHandler。此控件特别适用于具有左右箭头按钮的控件,并根据按住按钮增加或减少文本框中的数值。