#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» /> ), а затем эффект перехода переходит во всплывающее окно, а затем обратно насобытие закрытия. Другой случай, когда у вас есть панель навигации, которая всегда находится на странице, но скрыта. Создание его в качестве второй страницы и переход выглядит действительно гладко. В обоих случаях переход является частью удобства использования.