Использовать локальную версию WebUIValidation.js в ASP.NET
В ASP.NET некоторые скрипты по умолчанию извлекаются из ScriptResource.axd и WebResource.axd (это: MicrosoftAjaxTimer.js, MicrosoftAjax.js, MicrosoftAjaxWebForms.js в System.Web.Extensions и 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)
Что я пробовал:
Я прочитал старый пост Скотта Хансельмана по этому вопросу. Его идея состоит в том, чтобы использовать скрипт-менеджер для переопределения каждого скрипта со ссылкой на локальную версию, подобную этой.
<asp:scriptreference name="WebForms.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
Я пробовал это, но, похоже, он не работает для WebUIValidation.js. Как только страница с валидатором загружается, всегда будет выбираться js-файл ScriptResource.axd, содержащий скрипт валидации. Хансельман написал предупреждение (до выпуска.NET 4): "ПРИМЕЧАНИЕ. Существует несколько элементов управления, которые не используют ScriptManager, поэтому у них не может быть отключен JavaScript. До сих пор валидаторы были основными виновники. Я разговариваю с командой и посмотрим, сможем ли мы исправить это в 4.0"
Но я не уверен, что делать с этой информацией, и я не могу найти более свежие обновления на эту тему.
Я также попытался заменить скрипт, используя один из моего CDN. Я включил cdn на своем Scriptmanager и в Application_Start файла global.asax. Я попытался установить собственный путь cdn ScriptManager.ScriptResourceMapping.AddDefinition("WebUIValidation", новый
ScriptResourceDefinition
{
Path="~/Scripts/WebForms/WebUIValidation.js",
CdnPath = "https://dl.dropboxusercontent.com/u/4486136/WebUIValidation.js",
LoadSuccessExpression = "window.Sys",
CdnSupportsSecureConnection = true
});
Это просто приводит к загрузке 2 экземпляров скрипта, как из выпадающего списка, так и cdn по умолчанию (ajax.aspnetcdn.com). По умолчанию загружается cdn в последнюю очередь, поэтому он будет выполняться только один раз. Видимо, он не признает, что я пытаюсь перезаписать.
Я также попытался полностью удалить ScriptResource.axd, добавив следующее в мой файл Web.Config.
<httpHandlers>
<remove verb="GET,HEAD" path="ScriptResource.axd" />
</httpHandlers>
Кажется, это ничего не делает.