jquery – 如何从ASP.NET MVC操作返回错误

前端之家收集整理的这篇文章主要介绍了jquery – 如何从ASP.NET MVC操作返回错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ASP.NET MVC开发一个网站.我正在使用jquery进行AJAX功能.在动作方法中,我想返回一些错误,表示输入不正确或无法执行动作.在这种错误的情况下,我期望jquery ajax错误处理程序被调用,我可以在那里采取适当的措施.我没有找到一个如何做到这一点的方法.以下是我的动作方法.

错误的情况下,我应该从一个Action发送什么来获取jquery错误处理程序?

public ActionResult AddToFavourites(int entityId,string entityType)
    {

        if (!Request.IsAjaxRequest())
            throw new InvalidOperationException("This action can be called only in async style.");

        try
        {
            RBParams.EntityType typeOfFavourite = (RBParams.EntityType)Enum.Parse(typeof(RBParams.EntityType),entityType);
            string status = "";

            if (typeOfFavourite == RBParams.EntityType.BusinessEntity)
            {
                status = MarkFavouriteEntity(entityId);
            }
            else if (typeOfFavourite == RBParams.EntityType.Review)
            {
                status = MarkFavouriteReview(entityId);
            }
            else
            {
                throw new InvalidOperationException("The type of the entity is not proper");
            }

            return Content(status);

        }
        catch (Exception ex)
        {

            return Content("Error");
        }
    }

解决方法

当操作不返回预期状态代码时,将调用您的ajax错误处理程序.例如,如果没有找到该动作,或者如果您抛出一个不能处理的异常,它将会被触发.在你的情况下,如果你没有抓住你的动作中的错误,它将被调用(因为该操作将返回一个500状态代码).

但是,我不会这样做,因为这可能是预期的错误.当你成功,当你有错误的时候,我宁愿返回json.那么你可以指出它是否是一个成功的通话.这样的事情

public ActionResult AddToFavourites(int entityId,string entityType)
{

    if (!Request.IsAjaxRequest())
        throw new InvalidOperationException("This action can be called only in async style.");

    try
    {
        RBParams.EntityType typeOfFavourite = (RBParams.EntityType)Enum.Parse(typeof(RBParams.EntityType),entityType);
        string status = "";

        if (typeOfFavourite == RBParams.EntityType.BusinessEntity)
        {
            status = MarkFavouriteEntity(entityId);
        }
        else if (typeOfFavourite == RBParams.EntityType.Review)
        {
            status = MarkFavouriteReview(entityId);
        }
        else
        {
            throw new InvalidOperationException("The type of the entity is not proper");
        }

        return Json(new { Success = true,Status = status });

    }
    catch (Exception ex)
    {

        return Json(new { Success = false,Message = ex.Message });
    }
}

然后以与成功通话相同的方式处理它.你只需检查你的json响应的Success属性.然后处理错误回调中的意外错误.

猜你在找的jQuery相关文章