jQuery zum Aufrufen der Aktionsmethode in ASP.NET MVC C # von Ajax

8
Ich habe stundenlang versucht, das zum Laufen zu bringen, und ich hoffe wirklich, dass einer von euch mehr davon weiß als ich. Wenn der Klient in einer Textbox auftaucht, würde ich gerne die MVC C # Controller-Methode namens updateOrder (). Im Idealfall möchte ich mit einer FormCollection auf Formularelemente zugreifen (das Formular heißt "createOrder").

In der Steuerung habe ich:

C #

%Vor%

Die obige String-Deklaration ist gebrochen. In der Ansicht habe ich eine Methode, die ich im Grunde kopieren und einfügen, die ich auf stackoverflow gefunden habe:

JavaScript

%Vor%

Das Ereignis ist einfach:

JavaScript

%Vor%

Die updateOrderJS () -Methode wird ausgelöst (mit einer Warnung überprüft), der Haltepunkt jedoch nicht.

    
user4855057 08.05.2015, 21:27
quelle

4 Antworten

19

In Asp.Net MVC müssen Sie Ihre Methode nicht mit WebMethod dekorieren. Sie erstellen einfach eine Aktion (eine Methode) und geben ein Ergebnis daraus zurück. Für Beispiel:

%Vor%

Und in Ihrem View könnten Sie ein JavaScript wie dieses versuchen (mit der $ .ajax jquery Methode) - Siehe die Kommentare):

%Vor%     
Felipe Oriani 08.05.2015, 21:36
quelle
3

In MVC benötigen Sie nicht den [WebMethod] -Stuff - Sie können nur eine reguläre Controller-Aktion haben, die ein ActionMethod zurückgibt (oder null, wenn Sie keinen Rückgabewert benötigen). Das WebMethod -Attribut mit statischen Methoden ist für WebForms, nicht für MVC.

%Vor%

Ihre URL im Javascript wäre die URL zu dieser Aktion, die Sie in Razor mit @Url.Action("updateOrder", "Orders") erreichen können, wobei "Aufträge" der Name Ihres Controllers ist.

    
Joe Enos 08.05.2015 21:34
quelle
0
  1. Stellen Sie sicher, dass "url" im Format page.aspx / updateOrder ist.

  2. Geben Sie datatype: json

  3. an
  4. Stellen Sie sicher, dass Ihr updateOrderJS() aufgerufen wird.

  5. Stellen Sie sicher, dass contentType: "application/json; charset=utf-8" enthalten ist.

Hinweis: [WebMethod] wird zum Aufrufen von Webforms-Methoden verwendet, nicht von MVC.

    
garryp 08.05.2015 21:38
quelle
0

Es sieht so aus, als würden Sie die URL der MVC-Route in das action -Attribut Ihres <form> -Tags eingeben. Ich kann nicht sehen, wie dieses Attribut aussieht, weil du deinen HTML-Code nicht hochgeladen hast, aber von dem, was ich sehen kann, könnte der Wert dieses Attributs falsch sein.

In den meisten Fällen ist die URL für eine bestimmte MVC-Aktion http://ServerDomain/Path(IfAny)/ControllerName/ActionName . Zum Beispiel, wenn Sie einen Controller und eine Aktion wie folgt haben ...

%Vor%

... und Ihre ASP.NET-Anwendung wird auf www.example.com bereitgestellt. Die URL im action -Attribut Ihres <form> -Tags wäre http://www.example.com/Stack/Overflow .

Natürlich können andere Einstellungen in Ihrem ASP.NET MVC diese URLs ändern, z. B. die Routeneinrichtung in der RegisterRoutes -Methode von global.asax oder vielleicht, wenn Ihre Controller in Bereiche unterteilt sind. Wenn die URL Ihres <form> korrekt angezeigt wird, posten Sie den HTML-Code zusammen mit dem relevanten Controller-Routing-Code in Ihrer ASP.NET-App.

Wenn sich Ihr Formular in einer Razor-Ansicht (cshtml-Datei) befindet, können Sie <form action="@Url.Action({ controller = "ControllerName", action = "ActionName" })" method="post"> verwenden, um die korrekte Formular-URL zu generieren.

    
Joshua Carmody 08.05.2015 21:39
quelle