Использовать локальную версию 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">

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

Я пробовал это, но, похоже, он не работает для 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>

Кажется, это ничего не делает.

0 ответов

Другие вопросы по тегам