MVC Ajax PartialViews не запускает Javascript - я должен использовать Spark? - PullRequest
0 голосов
/ 12 августа 2010

Я использую MVC 2 и механизм представления по умолчанию для возврата частичных представлений .ascx с использованием метода JQuery Ajax .get ().У частичных представлений есть некоторый javascript в них, и я обнаружил, что поведение javascript нестабильно в том смысле, что иногда он выполняется, а в других - нет.Я встретил ответ от MS Program Manager на другом форуме со следующим текстом:

"Когда вы обновляете DOM с новым HTML, браузер не выполняет автоматически скрипты в новом бите HTML. Наши помощники Ajax должны были бы проанализировать частичный HTML и попытаться выполнить сценарии, что довольно сложно, а в настоящее время мы этого не делаем. "Обходной путь, но мне было интересно, является ли эта проблема специфичной для механизма представления по умолчанию, и будет ли механизм представления, такой как Spark, решать проблему?Я никогда не использовал другой движок вида раньше?Спасибо за помощь!

Ответы [ 3 ]

1 голос
/ 12 августа 2010

Если вы используете jQuery, вы можете сделать небольшой хак, чтобы заставить Javascript срабатывать с помощью функции .live ().

Допустим, вы включили элемент <div class="javascriptTrigger"></div> в свой частичный вид, вы должны иметь возможность добавить jquery на ваш сайт.

$(document).ready(function(){
   $(".javascriptTrigger").live("load", function(){ 
   // Do some javascript 
   });

});

Функция .live () прослушивает изменения в DOM и присоединяет обработчики событий при совпадении триггера.

Может быть возможным решением вашей проблемы

0 голосов
/ 18 августа 2010

Я решил проблему в конце, используя живые события. Важным моментом является то, что в моем случае я загружал частичные представления MVC, и некоторые из этих частичных представлений имели одинаковые идентификаторы элементов. Это означало, что прямое событие связывалось с несколькими элементами и запускалось несколько раз. Я знаю, что нужно позвонить die прежде, чем я вызову live, чтобы отменить привязку live live перед возвратом моего нового частичного представления.

0 голосов
/ 12 августа 2010

Нет, использование другого движка View в этой ситуации не поможет.Это то, что происходит на уровне браузера.Проще говоря, ваш вызов AJAX запрашивает у сервера небольшую разметку HTML, а затем динамически внедряет этот фрагмент разметки в DOM текущей страницы.Как указано, эта операция по умолчанию не выполняет никакого нового javascript, который может содержаться в этой разметке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...