为什么此MVC操作在IE11中返回404响应

时间:2015-06-08 14:13:36

标签: ajax asp.net-mvc routing

我写了一个mvc动作,适用于Chrome和Firefox,但不适用于IE11。使用IE11,它返回404响应代码。

控制器:

[HttpDelete]
public ActionResult DeleteAction(int ActionID)
{
    return Json(_Logic.DeleteAction(ActionID), JsonRequestBehavior.DenyGet);
}

致电JS:

Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
    return $.ajax({
        type: "DELETE",
        datatype: 'json',
        url: "/root/someurl/DeleteAction?ActionId=" + _actionID,
        contentType: 'application/json; charset=utf-8',
        success: function (data) { successCallback(_actionID, data); },
        error: function (data) { failureCallback(data); },
    });
};

我正在访问的网址是正确的,因为它可以在其他浏览器中使用。有没有人见过这个?

2 个答案:

答案 0 :(得分:1)

因为你说它适用于Chrome和Firefox我假设你在IIS上启用了PUT/Delete方法吗?

如果是,我认为这可能是某些IE浏览器在Ajax调用中不支持type: "DELETE"的问题。也许你正在使用IE8的兼容模式或类似的东西?

此处已经提到了这个问题:Problem with jQuery.ajax with 'delete' method in ie也许您只是发现IE11也不支持DELETE

另一个好的讨论Are the PUT, DELETE, HEAD, etc methods available in most web browsers?

答案 1 :(得分:0)

试试这个。

Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
return $.ajax({
    type: "DELETE",
    datatype: 'json',
    url: '@Url.Content("~/root/someurl/DeleteAction/")' + _actionID,
    contentType: 'application/json; charset=utf-8',
    success: function (data) { successCallback(_actionID, data); },
    error: function (data) { failureCallback(data); },
});

};