【问题标题】:Return alert message when fail validatemodel in web api当 web api 中的验证模型失败时返回警报消息
【发布时间】:2016-01-27 16:43:21
【问题描述】:

我有一个 asp.net web api 的验证模型属性,我使用 jquery ajax 调用来执行 web api 调用。但是,当我的 ajax 调用失败时,ajax 错误不会返回任何成功或失败的消息。

public class ValidationActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        var modelState = actionContext.ModelState;

        if (!modelState.IsValid) {
            actionContext.Response = actionContext.Request
                 .CreateErrorResponse(HttpStatusCode.BadRequest, modelState);
        }
    }
} 

$.ajax({
  ...,
  success: function() {
    alert('success');
  },
  error: function() {
    alert('fail');
  }
});

【问题讨论】:

  • 你的 c# 代码真的被击中了吗?
  • @MarkC。是的,C# 代码正在验证操作过滤器中。但是,如果有验证错误,它不会命中 web api 控制器。我怀疑这是原因,但我不知道如何解决。
  • @MarkC。明白了,我有错误的语法。我在我的 ajAx 代码中输入了失败而不是错误
  • 哦,是的,errordeprecated(如果您使用的是“较新”版本的 jQuery)..很好!
  • @Mark C. 顺便说一句,我如何从 ValidationActionFilter 错误地获得响应?

标签: javascript jquery ajax asp.net-web-api asp.net-web-api2


【解决方案1】:

要将响应发送到您的 donefail 方法中,只需执行以下操作:

$.ajax( "your ajax object" )
  .done(function(data) {
    alert(data);
  })
  .fail(function(error) {
    alert(error);
  });

当您将参数传递给回调(donefail)时,您正在捕获响应。因此,如果您使用 API 获取字符串数组,并且成功,则该数组将位于 data 内。

【讨论】:

  • 它没有命中 api。如果验证失败,它会失败。如何从 js 中的 ValidationActionFilter 获取 actionContext.Response?
  • 你试过我的答案了吗?
猜你喜欢
  • 2022-12-07
  • 2018-08-03
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多