2013-06-04 1 views
0

У меня есть мастер макет смотрит как-то вроде этогоJQuery Mobile Ajax ссылка не работает должным образом в приложении ASP.NET MVC

<html> 
    <head> 
     ... 
    </head> 

<body> 
    <section data-role="page" data-theme="d"> 
     <section data-role="content"> 
      @RenderBody() 
     </section> 
    ... 
    @Scripts.Render("~/bundles/jquery.mobile") 
    </section> 
</body> 
</html> 

И у меня есть несколько контроллеров и шаблонов толкающих код в содержание раздела мастера компоновки ,

Когда я нажимаю на ссылку:

<a href="/Orders/EditOrder/14960">Some order</a> 

на основе AJAX Загрузчик показано, изменения URL, но все, что я вижу разбитую разметка исходной страницы. Если я проверю код, я увижу, что в DOM есть два раздела страниц (это означает, что целевая страница успешно введена, но не показана). Если я обновляю страницу, я увижу целевую страницу.

Итак, что случилось? Почему я не могу получить причудливые переходы страницы JQM? Спасибо.

ответ

0

Добавьте данные-ajax = 'false' в ссылки, которые отвечали за перенаправление вас на другую страницу.

JQuery Mobile использует навигацию AJAX, если не указано иное. Переадресации ASP.NET не имеют проблем с обычными запросами, но вызывают проблемы с AJAX. Поэтому мой ответ в этом случае - отключить AJAX. Для этого вам нужно добавить атрибут data-ajax = 'false' в тег.

В моем случае может быть простое решение (так как изменение каждого Html.ActionLink/Url.Action занимает много времени), добавив это в конец _Layout.cshtml (непосредственно перед закрытием тега body) ,

$(document).on('pageinit', function() { 
    $('a').each(function() { 
    $(this).attr("data-ajax", "false"); 
}); 

});

Это было бы хорошо, если вы не хотите, чтобы jQuery mobile использовал любой Ajax со ссылками. В большинстве случаев вы можете использовать Ajax и использовать его только выборочно, где это может вызвать проблему.

Смежные вопросы