2017-02-15 21 views
0

クライアント側からメソッドを呼び出そうとしていますが、コントローラメソッドに[ActionName]属性があります。しかし、すでにその名前で同じアクションメソッドがあります。しかし、私はこのメソッドをajax呼び出しでMyMethod()と呼ぶ必要があります。これは、新しいメソッドを作成したり、MyMethod()の属性を変更したりせずに可能ですか?それが唯一の最初のメソッドを呼び出しているように、これは、動作していないクライアント側からactionname属性を持つメソッドを呼び出す方法

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

public ActionResult PaymentMethod() 
{ 
    // Some logic 
} 

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

Javacriptコード:

は、ここでコントローラのコードです。

+0

@DarshakGajjarあなたが提供したリンクとの重複はどうですか? – Mairaj

+0

もう1つが 'HttpPost'でなければ、それを呼び出すことができます。同じコントローラ内にすでに存在するアクション名を使用することはできません。 – ViVi

+0

私は正しいコントローラのメソッドは、要求の種類とデータから推測する必要がありますと思う。だから私はあなたの問題は、アクション名ではないと思うが、そのデータは送信されていないか、正しく処理されていません。 'HttpRequest.RouteData'にあるものをサーバ側でデバッグすべきです。例えば、出発点です。 –

答えて

-1

私はあなたにコードを変更するべきだと思う:あなたはAsp.netのコアを使用しているとして、あなたは以下のように私の方法の属性を変更する場合があります

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

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

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

・ホープこの助け!

+0

このエラーは、この行に上記のコードを使用しているときに発生します。[HttpPost( "PaymentMethod")] System.Web.Mvc、HtttpPostAttributeには1つの引数を取るコンストラクタが含まれていません。 – Deepika

+0

あなたのコードにAsp.net Core MVCを使用していますか? –

+0

Asp.net MVC 4または5を使用している場合、最初の方法を使用する必要があります。 –

関連する問題