0

我正在基于我在网上找到的 jQuery 增强文本框创建我的第一个 ASP.NET 服务器控件。部分原始代码包含一个 jQuery 扩展文件,因此我需要将其包含在我的控件中。(基本的 jQuery 库是 Web 应用程序的要求,因此出于我们的目的,我们可以安全地假设它已经在使用该控件的任何页面上可用。)

我首先将 javascript 文件添加为资源,并且能够在控件的 Render 事件中写入流。虽然它根据需要创建了 HTML/javascript,但 jQuery 不能正常工作。

我遇到的第二个问题是我预计将在任何给定页面上使用多个控件实例,因此即使上述方法有效,该 javascript 也会不断重复。呸。

如何在我的控件中包含这个 javascript,但确保只呈现它的一次迭代?谷歌搜索发现了一些关于使用 as[assembly]属性和的引用Page.RegisterClientScriptResource,但我对此不太清楚。

4

2 回答 2

0

一个想法是将其嵌入页面中,然后将其用作:

const string JAVASCRIPT_RESOURCE = "[namespace].[class].customJS.js"
Stream st = Assembly.GetExecutingAssembly().GetManifestResourceStream(JAVASCRIPT_RESOURCE);
StreamReader sr = new StreamReader( st );
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 
                                             "customJS", sr.ReadToEnd(), true);

另一种是添加cache-control指令。这将导致浏览器从其本地缓存加载它以供后续请求。在发布模式下WebResources发出指令。cachedebug=false

于 2011-07-14T16:24:41.850 回答
0
Page.ClientScript.RegisterClientScriptResource(getType(page), _
   page.ResolveUrl("~/scripts/jquery.js")

RegisterClientScriptResource 的全部目的是防止页面重新加载重复的脚本。

请注意,上面的示例假设您在 Intranet 上工作。如果您使用的是公共网站,最好使用 CDN 托管文件 (http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js)

于 2011-07-14T16:41:02.580 回答