0

我有一个带有自定义表单身份验证的 MVC3 项目。我的身份验证工作正常(我使用“HttpContext.Current.User.Identity.IsAuthenticated”属性以确保它正常工作)

我在我的表单中使用了 Ajax:

$(document).ready(function () {
    $.ajax({
        url: '/MyPages/MyControllerFunction',
        type: 'POST',
        success: function (result) { $('#MyJavaTemplate').tmpl(result).appendTo('#MyHtmlTable'); },
        error: function (result) {
            $('#errorDisplay').html(result.responseText);
        }
    })
});

当我到达这个页面时(并且 ajax 应该调用这个控制器的函数)我得到这个错误:

HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。

我的控制器功能:

[HttpPost]
    public ActionResult MyControllerFunction()
    {
        var MyEntity = MyBusinessLogic.GetByID(1);
        return Json(MyEntity);
    }

(我也尝试添加 [Authorized] 属性,但没有帮助)

当我通过ajax调用控制器的函数时,它只会发生在我身上。在我更改我的程序以使用表单身份验证之前,这一切都有效。就好像用户没有经过身份验证(即使它是)

应该怎么解决这个问题?

4

2 回答 2

0

我认为您在该控制器操作上指定了 GET,应该是 POST

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult MyControllerFunction()
于 2012-11-28T11:56:48.570 回答
0

我找到了解决方案!

在这里: 使用 jQuery 在 MVC3 中调用操作时出现 404

我所要做的就是改变:

url: '/MyPages/MyControllerFunction'

到网址:'@Url.Action("MyControllerFunction","MyPages")'

于 2012-12-02T09:22:59.543 回答