2017-02-15 77 views
0

我想從客戶端調用方法,我的控制器方法具有[ActionName]屬性。但是這個名稱已經有了相同的動作方法,但是我需要通過ajax調用來調用MyMethod()方法。這可能沒有創建任何新方法或對MyMethod()的屬性進行任何更改。如何從客戶端調用具有actionname屬性的方法

這裏是控制器代碼:

public ActionResult PaymentMethod() 
{ 
    // Some logic 
} 

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

Javacript代碼:

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

這是行不通的,因爲它是隻調用第一個方法。

+0

@DarshakGajjar它是如何與你提供的鏈接重複? – Mairaj

+0

如果另一個不是'HttpPost',你可以這樣調用。您不能使用同一控制器中已存在的相同操作名稱。 – ViVi

+0

我想應該從請求類型和數據中推斷出正確的控制器方法。所以我認爲你的問題不在於操作名稱,但是數據不會被正確發送或處理。例如,您應該在服務器端調試「HttpRequest.RouteData」中的內容。 –

回答

-1

我想你應該可以在代碼更改爲:

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

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

當你使用Asp.net核心,你可能會改變我的方法如下屬性:

[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,你應該使用第一種方法。 –

相關問題