asp.net Aufruf einer Ascx-Seitenmethode mit jquery




web-services asmx (7)

Ich weiß, dass ich eine Seitenmethode mit jquery unter Verwendung der folgenden Syntax aufrufen kann

$.ajax({
  type: "POST",
  url: "Default.aspx/GetDate",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Replace the div's content with the page method's return.
    $("#Result").text(msg.d);
  }
});

Dies funktioniert für Aspx- Seiten, aber ist es mit Ascx- Seiten möglich? (Web-Kontrollen)

Ich habe es etwa eine halbe Stunde lang versucht und da ich es nicht zur Arbeit bringen kann, frage ich mich, ob es überhaupt möglich ist.

Hinweis: Nur um klar zu sein, wenn ich versuche, die ascx Seite aufzurufen, aktualisiere ich die URL in jquery :)


Ich glaube nicht, dass dies möglich sein wird, da Benutzersteuerungen nicht extern zugänglich sein sollen (außerhalb einer Seite). Ich schlage vor, nur einen Skriptdienst (einen Webdienst) zu verwenden.


Ich würde einen Generic Handler (.ashx) erstellen, der das Steuerelement lädt und seinen gerenderten HTML-Code in die Antwort schreibt.


Was ist mit dem Erstellen der Methode auf der ASPX-Seite, die das tut, was es mit den Informationen aus dem Steuerelement benötigt? Ich weiß, dass Leute zurück und viert auf was Kontrollen enthalten oder nicht enthalten, aber wenn das Steuerelement nur Eigenschaften und Objekte enthält, würde ich denken, die Funktion in der ASPX-Seite könnte für Sie arbeiten. Offensichtlich würde es viele Kompromisse geben.



Ich denke nicht, dass es möglich ist, die ascx-Datei direkt anzufordern - dh "MyControl.ascx" als URL-Parameter an $ .ajax (..) zu liefern. Die Ascx-Datei wird nicht direkt vom Webserver verfügbar gemacht.

Sie können, glaube ich, die URL der aspx-Seite angeben, die das Benutzersteuerelement enthält - dh, wenn eine Instanz von MyControl.ascx auf MyPage.aspx lebt, müssten Sie "MyPage.aspx" als URL-Parameter angeben. Es hört sich so an, als könnte das den Zweck für das, was Sie erreichen wollen, besiegen.

EDIT: Was Clyde unten gesagt hat, scheint eine gute Idee zu sein. Ich mache etwas Ähnliches selbst, indem ich das ascx-Steuerelement auf einer Seite einschließe, deren Aufgabe es ist, sie nur für den Zugriff vom clientseitigen Skript aus zu hosten.


Sie können die Methode GetDate () in Default.aspx oder in eine andere aspx-Datei schreiben UND SIE KÖNNEN DIESE METHODE VON .ASCX FILE ANRUFEN .

Ex:

In UserControl.ascx:

$.ajax({
 type: "POST",
 url: "Default.aspx/GetDate",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {
 // Replace the div's content with the page method's return.
 $("#Result").text(msg.d);
}

});

In Default.aspx.cs:

Public void GetDate() //Public static void { //your code here }






pagemethods