2017-02-15 20 views
0

Ich versuche, eine Methode von Clientseite aufrufen, hat meine Controller-Methode [ActionName] -Attribut auf es. Aber es gibt bereits eine gleiche Aktionsmethode mit diesem Namen. Aber ich muss diese Methode MyMethod() von Ajax aufrufen. Ist dies möglich, ohne eine neue Methode zu erstellen oder Änderungen an den Attributen von MyMethod() vorzunehmen?So rufen Sie eine Methode mit actionname -Attribut von Clientseite

Hier ist Controller-Code:

public ActionResult PaymentMethod() 
{ 
    // Some logic 
} 

[ValidateInput(false)] 
[HttpPost, ActionName("Paymentmethod")] 
[FormValueRequired("applydiscountcouponcode")] 
public ActionResult MyMethod(string dd, FormCollection ff) 
{ 
    // Rest of logic 
} 

Javacript Code:

function ApplyDiscountCode() { 
    debugger 
    $.ajax({ 
     type:"POST", 
     url: "/controllername/Paymentmethod", // call method 
     data: { dd: $("#inpCode").val(), ff: null }, 
     success: function (data) { 
      debugger 
      alert(data); 
     } 
    }); 
} 

Dies funktioniert nicht, da es nur die erste Methode aufruft.

+0

@DarshakGajjar Wie ist es mit dem von Ihnen bereitgestellten Link doppelt vorhanden? – Mairaj

+0

Sie können so anrufen, wenn der andere nicht 'HttpPost' ist. Sie können nicht den gleichen Aktionsnamen verwenden, der bereits in demselben Controller vorhanden ist. – ViVi

+0

Ich denke, die richtige Controller-Methode sollte aus dem Anfragetyp und den Daten abgeleitet werden. Ich denke also, Ihr Problem ist nicht mit dem Aktionsnamen, aber damit werden die Daten nicht korrekt gesendet oder verarbeitet. Sie sollten serverseitig debuggen, was zum Beispiel als Startpunkt in der HttpRequest.RouteData steht. –

Antwort

-1

Ich denke, Sie sollten den Code geändert werden:

[ValidateInput(false)] 
[HttpPost("PaymentMethod")] 
[FormValueRequired("applydiscountcouponcode")] 
public ActionResult MyMethod(string dd, FormCollection ff) 
{ 
    // Rest of logic 
} 

Hoffnung:

[HttpGet] 
public ActionResult PaymentMethod() 
{ 
    // Some logic 
} 

[HttpPost] 
[ValidateInput(false)] 
[FormValueRequired("applydiscountcouponcode")] 
public ActionResult PaymentMethod(string dd, FormCollection ff) 
{ 
    // Rest of logic 
} 

Wie Sie Asp.net-Core verwenden, können Sie die Attribute meiner Methode wie unten ändern diese Hilfe!

+0

Dieser Fehler tritt auf, wenn ich obigen Code für diese Zeile verwende [HttpPost ("PaymentMethod")] System.Web.Mvc, HtttpPostAttribute enthält keinen Konstruktor, der 1 Argument benötigt. – Deepika

+0

Verwenden Sie Asp.net Core MVC für Ihren Code? –

+0

Wenn Sie Asp.net MVC 4 oder 5 verwenden, sollten Sie den ersten Weg verwenden. –

Verwandte Themen