ASP.NET Формы и мобильная логика jQuery Противоречивы

#asp.net #jquery-mobile

#asp.net #jquery-mobile

Вопрос:

Я сталкиваюсь с тем, что выглядит как противоречие между jQuery Mobile и ASP.NET Формы. У меня есть две страницы, между которыми я переключаюсь с помощью переходов между страницами jQuery Mobile. Базовая структура выглядит примерно так:

 <html>
<body>
<div id="page1" data-role="page">
   <form id="aspNetForm" runat="server">
      Page 1
      <a href="#page2">Page 2</a>
      <!-- Some more ASP.NET controls that require the aspNetForm -->
   </form>
</div>
<div id="page2" data-role="page">
   Page 2
   <a href="#page1">Page 1</a>
</div>
</body>
</html>
  

Обратите внимание, что тег form присутствует только на первой странице. Это потому, что ASP.NET допускается только одна форма на странице. Когда я пытаюсь переместить тег формы за пределы разделов страницы, jQuery Mobile начинает вести себя странно (в частности, переходы страниц начинают выглядеть странно). Это становится проблемой, когда я хочу использовать какой-либо ASP.NET веб-элементы управления, которые обеспечивают ввод данных внутри второй страницы.

В основном существуют эти правила, которые по существу приводят к противоречию:

 ASP.NET:
1) All web controls that deliver an input must be within an ASP.NET form tag
2) Only one ASP.NET form tag can be visible (as in visible=True, not display: block) per page request

jQuery Mobile:
1) All content, including forms, must be within a page div
  

Кто-нибудь может придумать способ обойти это? Я думаю, я мог бы ограничить страницу 2 использованием только традиционного HTML, а не веб-элементов управления, но это не кажется самым элегантным решением. Есть идеи? Кто-нибудь еще сталкивался с этим?

Ответ №1:

Хорошо. На мой взгляд, простым решением было бы предоставить каждой странице свой собственный aspx-файл. Это будет работать просто отлично.

Если ваш сайт очень большой, это также повысит производительность.

Комментарии:

1. Мы делали это в большинстве случаев. Однако есть несколько случаев, когда это все еще возникает. Например, всплывающие окна на мобильных телефонах, по-видимому, имеют наилучшую производительность (учитывая пространство маленького экрана), когда они вводятся как отдельные «страницы» (как в <div data-role=»page» /> ), а затем эффект перехода переходит во всплывающее окно, а затем обратно насобытие закрытия. Другой случай, когда у вас есть панель навигации, которая всегда находится на странице, но скрыта. Создание его в качестве второй страницы и переход выглядит действительно гладко. В обоих случаях переход является частью удобства использования.