如何从客户端调用具有actionname属性的方法

时间:2017-02-15 06:54:47

标签: javascript asp.net-mvc

我试图从客户端调用方法,我的控制器方法有[ActionName]属性。但是已经有一个与该名称相同的动作方法。但我需要通过ajax调用调用此方法MyMethod()。如果不创建任何新方法或对MyMethod()的属性进行任何更改,这是否可行。

这是控制器代码:

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);
        }
    });
}

这不起作用,因为它只调用第一种方法。

1 个答案:

答案 0 :(得分:-1)

我认为您应该将代码更改为:

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

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

当您使用Asp.net Core时,您可能会更改我方法的属性,如下所示:

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

希望这有帮助!