Frage

Ich mag das den Update-Panel Postbacks erstellen, ohne dass ein Update-Panel mit der Postbacks zu tun. Was ist die generische Methode, dies zu tun?

Zum Beispiel auf Stackoverflow, wenn Sie wählen nach oben oder unten auf eine Frage ist es ein Postback die Datenbank zu aktualisieren, und ich würde wetten, dass sie ein Update-Panel nicht genutzt.

Was muss ich?

Ich habe eine Tabelle mit Tabellendaten. Wenn ich auf dem td Artikel als Ganze Spalte klicken, mag ich ein Update auf die Datenbank zu tun, und auch eine Gridview auf der Seite selbst aktualisieren. Die Gridview zeigt alle derzeit angeklickt Elemente in der Tabelle, weil sie über „unsere Methode“ aktualisiert wurde.

Sie suchen eine gute generische Methode, die ich für eine Menge asynchroner Postbacks ohne Update-Panel nutzen könnte.

War es hilfreich?

Lösung

Die Art und Weise, dass Stack-Überlauf unterscheidet sich in zwei wichtigen Punkten von dem Codeproject Artikel funktioniert.

  • Stack-Überlauf macht seinen AJAX-Request an einer ASP.NET MVC-Controller-Aktion, keine eigenständige ASPX-Seite. Man könnte dies als der MVC-Analog einer ASP.NET AJAX-Seite Methode in Betracht ziehen. In beiden Fällen wird hinkt die ASPX Methode hinter in Bezug auf Leistung.

  • Stack-Überlaufes AJAX Anfrage liefert ein JSON serialisiert Ergebnis, nicht willkürlich oder HTML-Text. Dies macht es auf der Client-Seite mehr standardisiert und in der Regel sauberen Handhabung.

Zum Beispiel:., Wenn ich diese Frage abgestimmt einen XmlHttpRequest Antrag wurde, gemacht / Fragen / 171000 / Abstimmung, mit einem „voteTypeId“ von 2 in den POST-Daten

Der Controller, der die Anforderung meine Stimme an einen Tisch irgendwo hinzufügt, und antwortete dann mit diesem JSON:

{"Success":true,"NewScore":1,"Message":"","LastVoteTypeId":2}

Mit Hilfe dieser Informationen, das JavaScript nimmt die clientseitige Anzeige der Aktualisierung:

var voteResult = function(jClicked, postId, data) {
  if (data.Success) {
    jClicked.parent().find("span.vote-count-post").text(data.NewScore);
    if (data.Message)
      showFadingNotification(jClicked, data.Message);
  }
  else {
    showNotification(jClicked, data.Message);
    reset(jClicked, jClicked);

    if (data.LastVoteTypeId) {
      selectPreviousVote(jClicked, data.LastVoteTypeId);
    }
  }
};

Wenn Sie WebForms verwenden, die Beispielseite Methoden aufrufen, die Sie auf meinem Blog ist auf jeden Fall in die richtige Baseballstadion.

Aber ich würde vorschlagen, dass Sie einen Web-Service für jede zentrale Funktionalität (wie diese Abstimmung Beispiel) anstelle von Seitenmethoden in Betracht ziehen. Seite Methoden scheinen etwas einfacher zu schreiben, aber sie auch einige Wiederverwendung Nachteile haben und neigen dazu, eine Illusion von mehr Sicherheit zu schaffen, die nicht wirklich da ist.

Dies ist ein Beispiel für das gleiche tun gefunden Sie, aber mit Web-Service (die Kommentare zu diesem Beitrag tatsächlich auf die Post führte Sie gefunden):

http: // encosia .com / 2008/03/27 / mit-jquery zu den verzehr-aspnet-json-web-services /

Andere Tipps

Sie können nur einen Standard-AJAX-Aufruf verwenden, um dies zu erreichen. Erstellen Sie eine ASPX-Seite, die die Datenbank in seiner Page_Load Methode aktualisiert und zeigt alle gewünschten Informationen (wie der aktuelle DB-Wert nach dem Update) als XML. Dann machen Sie einen AJAX-Aufruf zu dieser Seite mit jQuery.

Sie können auch ein HTML-Fragment zurückgeben (das heißt eine aktualisierte Gridview), und verwenden Sie jQuery die aktualisierte HTML-Code in der aktuellen Seite eingefügt werden soll.

Edit: Probe 2 auf dieser Seite sollte sehr nahe sein, was Sie wollen:
http://www.codeproject.com/KB/ajax/AjaxJQuerySample.aspx

Das Link rel="nofollow ist das, was ich fand das beste, was zu sein, zu tun und mir zu erlauben, Methoden JavaScript und Web zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top