我有一个我正在处理的网站,用户可以在其中添加或删除有轨电车网络的预订流量。我用删除按钮来到这里。
<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
答案 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