通过JQuery在mvc-5动作中执行删除

时间:2016-07-04 14:03:48

标签: javascript jquery asp.net-mvc-5

我有一个我正在处理的网站,用户可以在其中添加或删除有轨电车网络的预订流量。我用删除按钮来到这里。

<input type="button" value="Delete" class="deleteTraffic btn btn-link NoBorder NoBackGround" data-id="@traffic.Id" />
jQuery(document).ready(function() {
    jQuery('.deleteTraffic').click(function() {
        var id = $(this).data('id');
        var url = '@Url.Action("DeleteTraffic", "TrafficDate", new { trafficId=id })';
        url = url.replace("id", id);
        $.post(url, function (data) {
            if (data) {
                $('#pnlEditTraffics').hide().fadeIn('fast');
            } else {
                alert("Error.");
            }
        });
    });
});
public ActionResult DeleteTraffic(int id)
{
    return Json(TrafficData.DeleteTraffic(id));
}

按钮工作正常,参数很好,但是从未达到控制器中的Action。控制器名为TrafficDateController

1 个答案:

答案 0 :(得分:0)

第一个问题是您将参数传递给Url.Action()的顺序,操作名称是第一个参数,而第二个参数是控制器名称:

@Url.Action("DeleteTraffic", "TrafficDate")

此外,由于DeleteTraffic动作是使用POST动词调用的,因此最好将id作为请求体的一部分传递,因此无需手动构建最终版本路径使用url.replace('id', id)

var url = '@Url.Action("DeleteTraffic", "TrafficDate")',
    data = { id: id };

$.post(url, data, function (data) {
     // ...
});

请参阅MSDN