【问题标题】:How to embed JQuery into custom server control如何将 JQuery 嵌入到自定义服务器控件中
【发布时间】:2010-12-24 13:53:27
【问题描述】:

我正在编写一个服务器控件,它是一个带有建议的搜索框(当用户开始输入时,将出现匹配的单词供他们选择)。我正在使用 jquery 和 C#。

当我在我正在测试的页面上包含 jquery Lib 时,该控件工作正常。但是,当我尝试将 lib 嵌入 DLL 时,它不起作用。

我已尝试完全嵌入并注册脚本:

ClientScriptManager manager = this.Page.ClientScript;
manager.RegisterClientScriptResource(typeof(Search), jqueryResource); //jqueryResource= SearchControl.javascript.jquery.js 

我也尝试在包含 jquery 的页面标题中添加一个标签:

string javascriptUrl = manager.GetWebResourceUrl(typeof(Search), jqueryResource); 
LiteralControl jquery = new LiteralControl(string.Format(javascriptInclude, jqueryUrl));
Page.Header.Controls.Add(jquery);

尝试从控件获取信息时,这两种方式都会导致 javascript 错误(预期对象)

var params = $("#searchBox").val(); //called on keyup when typing in textbox

以前有人做过吗?可能吗?有人可以对此有所了解吗?

PS:程序集已经在 AssemblyInfo.cs 文件中注册。

【问题讨论】:

    标签: .net jquery custom-server-controls


    【解决方案1】:

    编辑:重新阅读您的问题并意识到我只是重复了您所做的事情。然而,这是我的实现,它按预期工作:

    您需要使用RegisterClientScriptResource。只需在控件的 PreRender 事件中调用以下 sn-p(取自我的 ScriptRegisterHelper 静态类):

    /// <summary>
    /// Registers the jQuery client script to the page.
    /// </summary>
    /// <param name="cs">The ClientScriptManager to assign the script to.</param>
    internal static void RegisterJQuery(ClientScriptManager cs)
    {
        cs.RegisterClientScriptResource(typeof(ScriptRegisterHelper), 
            "MyProject.Resources.jquery.js");
    }
    

    为了完成,下面是实现:

    protected override void OnPreRender(EventArgs e)
    {
        if (!this.DesignMode)
        {
    
           // Register the JavaScript libraries
           ClientScriptManager cs = this.Page.ClientScript;
           ScriptRegisterHelper.RegisterJQuery(cs);
    
        }
    }
    

    还有 AssemblyInfo 文件:

    [assembly: System.Web.UI.WebResource("MyProject.Resources.jquery.js", "text/javascript")]
    

    【讨论】:

    • 这正是我最初所做的,但它仍然没有工作。然后,当我继续思考时,有什么东西发出了咔嗒声。我查看了脚本文件构建操作,猜猜是什么?没错,我忘了将这个设置为嵌入式资源(您认为在注册程序集时它会这样做)。无论如何,它现在就像一个魅力。感谢您的帮助!
    • 我知道我也应该提到这一点!呵呵。
    • 感谢您提醒您将资源设置为嵌入。这让我发疯了。
    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多