jQuery Ajax发布错误

时间:2011-02-10 14:22:26

标签: asp.net-mvc-2 jquery

$.ajax({
    type: "POST",
    url: "/Controller/Methods/" + $('#FrameworkId').val() + "/10/" + $('#category').val(),
    success: function(data) {
        alert("sucess")
    },
    error:function(data) {
        alert(data.statuscode)
    }
});

在服务器端

假设在服务器端我正在做的动作

filterContext.HttpContext.Response.StatusCode = 401;
throw new UnauthorizedAccessException("Login_Expired");

仍然alert(data.statuscode)给出500

如果设置401,我该怎么办?

1 个答案:

答案 0 :(得分:2)

不要抛出异常

不要在动作过滤器中抛出异常。

无论如何,您的动作过滤器的性质是什么?这是一个example of an exception filter,它将400返回给客户端。

不是直接相关,而是仅供参考。作为Asp.net MVC框架一部分的HttpUnauthorizedResult以同样的方式实现:

public override void ExecuteResult(ControllerContext context)
{
    if (context == null)
    {
        throw new ArgumentNullException("context");
    }
    context.HttpContext.Response.StatusCode = 0x191;
}

如您所见,它只返回适当的状态代码。 不会抛出异常