JQuery-Mobile und ASP.Net - AJAX oder Postback?

8

Ich habe ASP.Net für die Vergangenheit entwickelt und bin bis vor kurzem auf ein mobiles Projekt gestoßen. Jquery-Mobile scheint perfekt als Rahmen dafür zu sein, also bin ich einfach hinein getaucht.

Zurzeit verwende ich den ASP.Net-Ansatz, um Serversteuerelemente auf einer Seite zu platzieren, und verwende dann jqm, um diese Steuerelemente so zu erweitern, dass sie mobil aussehen. Ich mache Postback, um Formulardaten zu sammeln und sie in Code-behind zu verarbeiten. Um eine vollständige Aktualisierung der Seite zu vermeiden, musste ich sie auch mit updatepanel mischen. Irgendwie habe ich sie arbeiten lassen, aber tief im Inneren fühle ich einfach, dass dies nicht der richtige Weg (oder effiziente Art) ist, es zu tun.

Es gibt zu viele Komplikationen beim Mischen der Dinge, um sie richtig zu machen, also denke ich, ich sollte Postback einfach vermeiden und alles andere - in reinen AJAX-Anfragen tun?

%Vor%

Code-Behind:

%Vor%

Fragen:

  • Das funktioniert, aber ist das der bessere Weg, um mit jQuery-Mobile Websites zu gehen, oder das ist nur ein anderes schlechtes Beispiel?

  • Ist UpdatePanel und Postback eine schlechte Idee für dieses Szenario? (Ich weiß, dass sie arbeiten)

  • Wenn AJAX bevorzugt wird, wie gehe ich vor, um eine Dropdown-Liste mit Pageload zu füllen (Nicht Server-Kontrolle)? Senden einer AJAX-Anfrage zum Auffüllen der Dropdown-Liste auf $ (Dokument) .ready () scheint mir dumm

Was ich suche, sind Faustregeln bei der Entwicklung einer mobilen Website. Ich möchte nicht zu weit von dem entfernt sein, was richtig funktionieren sollte. Ihre Eingaben werden sehr geschätzt. Danke.

    
Kagawa 16.01.2013, 07:33
quelle

1 Antwort

12

asp.net Web Forms und jQuery Mobile funktionieren wirklich nicht zusammen. Das Postback-Modell unterbricht die Funktionsweise von jQuery Mobile ajax und es wird fallen, wenn Sie mehr als eine einzelne Seite oder ein Formular haben. Insbesondere erfordert Web Forms ein einzelnes <form> -Tag, das alle serverseitigen Steuerelemente umschließt und Sie können keine zusätzlichen "internen" Formulare einfügen. jQuery Mobile funktioniert am besten mit dem Ajax-Modell und einer oder mehreren "Seiten" ( <div data-role="page"> ) und Formen, die im DOM enthalten sind. Update Panels werden letztlich Chaos verursachen.

Eine Möglichkeit besteht darin, jQuery Mobile ajax loading einfach zu deaktivieren. Das kannst du damit machen:

%Vor%

Aber am Ende werden Sie keine hocheffiziente Website haben. Wenn Ihre Site über ein lokales drahtloses Netzwerk läuft, kann es gut genug sein.

Ich arbeite in einer meist Web Forms-Umgebung und brauchte eine Web Forms-basierte jQuery Mobile App und codierte etwa 5 "Seiten" als eine einzige statische HTML-Datei. Ich verließ mich dann auf JavaScript und jQuery ajax Laden zu ASMX-Web-Service-Endpunkten. Ich habe auch KnockoutJS ausgiebig benutzt, aber ich hätte mich sicherlich auf JavaScript und jQuery ajax verlassen können, um Daten zu ziehen (und in meinem Fall war die App berichterstattend, ohne dass Daten aktualisiert wurden.) Wenn Sie Daten speichern, können Sie sie verwenden die gleiche Technik.

Ein noch besserer Ansatz besteht darin, mit asp.net MVC zu gehen, das das forcierte Postback-Modell eliminiert und eine feinkörnige Kontrolle darüber ermöglicht, wo Ihre <form> -Tags platziert werden.

Ich arbeite an einer größeren mobilen Website und verwende MVC für das Backend und nutze die Vorteile von Razor Views, aber am Ende vertraue ich auf clientseitige Ajax-Aufrufe für alle Daten und KnockoutJS für fast alle dynamischen Markups. Am Ende ist meine clientseitige App zwischen Web Forms und MVC nicht so unterschiedlich. MVC-basierte Controller sind einfacher mit Ajax-Endpunkten zu arbeiten und die Lösung ist sauberer.

Im Allgemeinen würde ich beide Lösungen in den "single page application" aka SPA-Ansatz einbeziehen. Es gibt andere Ansätze, die mit Web Forms funktionieren könnten, aber in meiner begrenzten Exploration war dies die beste Option.

    
andleer 16.01.2013, 13:57
quelle

Tags und Links