如何在asp.net自定义服务器控件中嵌入jquery库?

如何在asp.net自定义服务器控件中嵌入jquery库?,asp.net,Asp.net,我在自定义服务器控件中嵌入了jquery库。但它不起作用。它抛出“对象预期错误”。下面给出了完整的代码清单 jquery-1.4.1.js将其重命名为jquery.js using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using Syste

我在自定义服务器控件中嵌入了jquery库。但它不起作用。它抛出“对象预期错误”。下面给出了完整的代码清单

jquery-1.4.1.js将其重命名为jquery.js

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ServerControl1
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
    public class ServerControl1 : WebControl
    {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? "[" + this.ID + "]" : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {

            output.Write("<p>Hello World!!</p>");
        }

        public static void RegisterJQuery(ClientScriptManager cs)
        {
            cs.RegisterClientScriptResource(typeof(ServerControl1),
                "ServerControl1.Resources.jquery.js");
        }


        protected override void OnPreRender(EventArgs e)
        {
            if (!this.DesignMode)
            {

                // Register the JavaScript libraries
                ClientScriptManager cs = this.Page.ClientScript;
                ServerControl1.RegisterJQuery(cs);

            }
        }

        protected override void OnInit(EventArgs e)
        {



            string javascript = "<script type='text/javascript'> " +
                                   "$(document).ready(function () { " +
                                  "alert($('p').text()); " +
                                   "});</script>";

            if (!(Page.ClientScript.IsClientScriptBlockRegistered("bhelp")))
                Page.ClientScript.RegisterStartupScript(this.GetType(), "bhelp", javascript);

            base.OnInit(e);
        }

    }
}

    [assembly: System.Web.UI.WebResource("ServerControl1.Resources.jquery.js", "text/javascript")]
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用System.Linq;
使用系统文本;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
命名空间服务器控制1
{
[默认属性(“文本”)]
[ToolboxData(“”)
公共类ServerControl1:网络控制
{
[可装订(真实)]
[类别(“外观”)]
[默认值(“”)
[可本地化(正确)]
公共字符串文本
{
得到
{
字符串s=(字符串)视图状态[“文本”];
返回((s==null)“[”+this.ID+“]”:s);
}
设置
{
ViewState[“文本”]=值;
}
}
受保护的覆盖无效渲染内容(HtmlTextWriter输出)
{
output.Write(“helloworld!!

”); } 公共静态无效注册表jQuery(ClientScriptManager cs) { cs.RegisterClientScriptResource(类型为(服务器控制1), “ServerControl1.Resources.jquery.js”); } 受保护的覆盖无效OnPreRender(EventArgs e) { 如果(!this.DesignMode) { //注册JavaScript库 ClientScriptManager cs=this.Page.ClientScript; ServerControl1.RegisterJQuery(cs); } } 受保护的覆盖无效OnInit(事件参数e) { 字符串javascript=“”+ “$(文档).ready(函数(){”+ “警报($('p').text());”+ "});"; 如果(!(Page.ClientScript.IsClientScriptBlockRegistered(“bhelp”)) Page.ClientScript.RegisterStartupScript(this.GetType(),“bhelp”,javascript); 碱基.奥尼特(e); } } } [assembly:System.Web.UI.WebResource(“ServerControl1.Resources.jquery.js”、“text/javascript”)]
Thjis的文章似乎描述了您正在尝试做的事情:


有什么帮助吗?

我刚刚发布了一个控件库的压缩包,我使用了大量的控件库,其中嵌入了脚本,并内置了jquery UI主题

它有一个相当全面的ASP控件到Jquery+的映射,它正确地处理脚本的包含,这样您就不会遇到重复的.axd包含(如果不小心的话,最终会得到多个脚本副本)

注意,它还有一堆其他DAL/Linq的东西,还有一些通用的分层服务器控件,这些控件是部分构建的(jTreeView克隆),但我已经在一些大型项目中非常成功地使用了它

和也很有用