#asp.net #dotnetnuke #client-dependency
#asp.net #dotnetnuke #зависимость от клиента
Вопрос:
У меня проблема с установкой dotnetnuke на моей машине разработки. Когда я пытаюсь загрузить содержимое модуля администрирования страницы в разделе «Администратор / управление страницей», я получаю сообщение об ошибке JavaScript
страницы: 2089 Неперехваченная ошибка типа: не удается прочитать свойство ‘length’ неопределенного
Это связано с тем, что window.dnnLoadScriptsInAjaxMode не определен
var loadScriptInMultipleMode = function(){
for(var i = 0; i < window.dnnLoadScriptsInAjaxMode.length; i ){
Когда я просматриваю код страницы, я вижу и отлаживаю следующее, если проверка не удалась: «item.indexOf(‘$ crm_’)» не работает.
(function($){
Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(function (sender, args){
var dataItems = args.get_dataItems();
for(var item in dataItems){
if(item.indexOf('$crm_') > -1){
var content = dataItems[item];
...
Поскольку DataItems содержит все значения для заполнителей ClientDependency с подчеркиванием «_» в качестве префикса. например, «_crm_BodySCRIPTS» вместо знака доллара «$» «$crm_BodySCRIPTS», чего и ожидает код.
В нашем производственном экземпляре все работает нормально, и я не могу вспомнить, чтобы менялась какая-либо конфигурация префикса для платформы ClientDependency. Объединение и сокращение файлов отключено, как при администрировании.
Кто-нибудь может помочь с тем, что здесь может быть не так?
ОБНОВЛЕНИЕ: я вижу в строке Github: 172 https://github.com/dnnsoftware/Dnn.Platform/blob/development/DNN Platform/DotNetNuke.Web.Client/Providers/DnnBodyRenderProvider.cs что это жестко запрограммировано. Так что я, должно быть, каким-то образом уже установил ScriptManager, не зная.
Как это может быть?
Ответ №1:
Проблема вызвана установкой атрибута ClientIDMode в web.config для страниц.
<pages validateRequest="false" enableViewStateMac="true" enableEventValidation="true" viewStateEncryptionMode="Never" clientIDMode="AutoID">
Как указано в описании от Microsoft:
Значение ClientID генерируется путем объединения значений идентификаторов каждого родительского контейнера именования со значением идентификатора элемента управления. В сценариях привязки данных, в которых отображаются несколько экземпляров элемента управления, перед значением ID элемента управления вставляется увеличивающееся значение. Каждый сегмент разделяется символом подчеркивания (_). Этот алгоритм является единственным, который был доступен в версиях ASP.NET раньше , чем ASP.NET 4.
Атрибут вызывает изменение $ на подчеркивание для свойства ClientID, которое затем используется для отображения элементов данных с идентификатором «_crm». Таким образом, проверка на стороне клиента завершается неудачей.
Если вы удалите атрибут, все снова заработает.
Ответ №2:
Можете ли вы попробовать настроить «скин», который используется на странице управления страницей? Попробуйте использовать один из скинов «по умолчанию» с DNN, посмотрите, возможно, существует конфликт jquery / javascript с чем-то в вашем скине / теме, который вызывает ошибку JS, которую вы видите.
Если это поможет решить проблему, я бы начал просматривать ваш «порядок загрузки» файлов JS.
На какой версии платформы DNN вы сейчас работаете?
Комментарии:
1. Я попробую это и сообщу о своих результатах. Версия Evoq Content 8.5. Мы используем наш собственный скин и удалили скин по умолчанию. Но я могу восстановить это и попробовать.
2. Только что проверено, нет темы страницы и нет набора контейнеров страниц. Он по-прежнему работает в нашей тестовой среде, но не на компьютере разработчика
3. Возможно, тема страницы не задана, но использует ли она тему «сайт»?
4. Как я могу это увидеть? Тема сайта настроена на нашу собственную тему. Он работает на одной машине, не работает на другой. Немного странно
5. Я протестировал множество тем, и проблема все еще возникает