2017-02-15 45 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,你应该使用第一种方法。 –