将jQuery嵌入到ASP.Net Server自定义控件中

时间:2010-03-10 19:32:13

标签: asp.net jquery streaming custom-controls embed

我是本科生。我有一些与在ASP.NET服务器端自定义控件中嵌入jQuery相关的查询。

私有字符串GetEmbeddedTextFile(string sTextFile)         {             //用于检索内容的通用函数             //作为字符串的嵌入式文本文件资源

        // we'll get the executing assembly, and derive
        // the namespace using the first type in the assembly
        Assembly a = Assembly.GetExecutingAssembly();
        String sNamespace = a.GetTypes()[0].Namespace;

        // with the assembly and namespace, we'll get the
        // embedded resource as a stream
        Stream s = a.GetManifestResourceStream(
                    string.Format("{0}.{1}",a.GetName().Name, sTextFile)
                );

        // read the contents of the stream into a string
        StreamReader sr = new StreamReader(s);
        String sContents = sr.ReadToEnd();

        sr.Close();
        s.Close();

        return sContents;
    }
    private void RegisterJavascriptFromResource()
    {
        // load the embedded text file "javascript.txt"
        // and register its contents as client-side script
        string sScript = GetEmbeddedTextFile("JScript.txt");
        this.Page.RegisterClientScriptBlock("PleaseWaitButtonScript", sScript);
    }
    private void RegisterJQueryFromResource()
    {
        // load the embedded text file "javascript.txt"
        // and register its contents as client-side script
        string sScript = GetEmbeddedTextFile("jquery-1.4.1.min.txt");
        this.Page.ClientScript.RegisterClientScriptBlock(typeof(string), "jQuery", sScript);
       // this.Page.RegisterClientScriptBlock("JQueryResourceFile", sScript);
    }
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        // the client-side javascript code is kept
        // in an embedded resource; load the script
        // and register it with the page.
        RegisterJQueryFromResource();
        RegisterJavascriptFromResource();
    }

但我遇到的问题是我在单独的.JS文件中编写的所有我的JQuery代码,并试图嵌入我的自定义控件,在屏幕上作为输出流式传输。此外,我的控件不正常,因为它应该具有,由于没有正确嵌入的原因,jQuery功能不起作用:-( 请帮帮我! 谢谢!

2 个答案:

答案 0 :(得分:1)

听起来你错过了围绕javascript的<script>标签。试试RegisterClientScriptBlock的这个重载,它接受第四个布尔参数,如果它是真的,将添加脚本标记。

Page.ClientScript.RegisterClientScriptBlock(typeof(string), "jQuery", sScript, true);

答案 1 :(得分:0)

  

&#34;我在单独的.JS文件中编写并尝试嵌入我的&gt;自定义控件的所有JQuery代码都在屏幕上作为输出进行流式传输&#34;

听起来你需要添加一行告诉代码如何下载嵌入式javascript。在自定义控件项目中类的开头上方使用程序集注释执行此操作。格式如下:

<Assembly: System.Web.UI.WebResource("Namespace.ScriptName.js", "application/x-javascript")>