2

在 ASP.NET 中,默认情况下从 ScriptResource.axd 和 WebResource.axd 获取一些脚本(这些脚本是:MicrosoftAjaxTimer.js、MicrosoftAjax.js、MicrosoftAjaxWebForms.js in System.Web.Extensions 和 DetailsView.js、Focus.js、 GridView.js、Menu.js、SmartNav.js、TreeView.js、WebForms.js、WebParts.js 和 WebUIValidation.js)例如,只要页面具有验证器存在。

如何改用我的本地 WebUIValidation.js 文件?(在 ASP.NET 4.5 中)

我试过的:

我已经阅读了 Scott Hanselman 的旧帖子。他的想法是使用脚本管理器来覆盖每个脚本,其中包含对本地版本的脚本引用,如下所示

 <asp:scriptreference name="WebForms.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

http://www.hanselman.com/blog/ASPNETAjaxScriptCombiningAndMovingScriptResourceaxdsToStaticScripts.aspx

我已经尝试过了,但它似乎不适用于 WebUIValidation.js。加载带有验证器的页面后,将始终获取包含验证脚本的 ScriptResource.axd js 文件。Hanselman 确实写了一个警告(这在 .NET 4 发布之前)“注意:有一些控件不使用 ScriptManager,因此它们不能抑制其 JavaScript。到目前为止,验证器是主要的罪魁祸首。我正在与团队交谈,我们将看看我们是否无法在 4.0 中解决这个问题”

但我不确定如何处理这些信息,也找不到关于该主题的任何最新更新。

我还尝试使用我自己的 CDN 中的脚本替换脚本。我在我的 Scriptmanager 和 global.asax 的 Application_Start 上启用了 cdn 我尝试设置自定义 cdn 路径 ScriptManager.ScriptResourceMapping.AddDefinition("WebUIValidation", new

ScriptResourceDefinition
                    {
                        Path="~/Scripts/WebForms/WebUIValidation.js",
                        CdnPath = "https://dl.dropboxusercontent.com/u/4486136/WebUIValidation.js",
                        LoadSuccessExpression = "window.Sys",
                        CdnSupportsSecureConnection = true
                    });

这只会导致从 Dropbox 和默认的 cdn (ajax.aspnetcdn.com) 加载 2 个脚本实例。默认的 cdn 是最后加载的,所以它是唯一执行的。显然,它不承认我正在尝试覆盖。

我还尝试通过在我的 Web.Config 中添加以下内容来完全删除 ScriptResource.axd

<httpHandlers>
      <remove verb="GET,HEAD" path="ScriptResource.axd" />
    </httpHandlers>

这似乎没有任何作用。

4

0 回答 0