在ASP.NET中,默认情况下从ScriptResource.axd和WebResource.axd获取一些脚本(这些脚本是:MicrosoftAjaxTimer.js,MicrosoftAjax.js,System.Web.Extensions中的MicrosoftAjaxWebForms.js和DetailsView.js,Focus .js,GridView.js,Menu.js,SmartNav.js,TreeView.js,WebForms.js,WebParts.js和WebUIValidation.js) 例如,只要存在带验证器的页面,就会加载一个名为ScriptResource.axd?= someGuid.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">
我已经尝试过,但它似乎不适用于WebUIValidation.js。加载带有验证程序的页面后,将始终提取包含验证脚本的ScriptResource.axd js文件。 Hanselman确实写了一个警告(这是在.NET 4发布之前)“注意:有一些控件没有使用ScriptManager,所以他们不能禁止他们的JavaScript。到目前为止验证器是主要的罪魁祸首。我正在与团队交谈,我们将看看我们是否无法在4.0中解决这个问题
但我不知道如何处理这些信息,我找不到有关该主题的最新更新。
我也尝试过使用我自己的CDN替换脚本。我在我的Scriptmanager上启用了cdn 在global.asax的Application_Start中,我尝试过设置自定义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>
这似乎没有做任何事情。