2017-06-01 74 views
1

有没有什么办法来显示自定义消息在Ajax错误?我有这个在服务器端从返回内容的ajax响应与IHttpActionResult非正常响应

[HttpPost] 
public IHttpActionResult CrearProducto(EProducto Producto) 
{ 
    if (objBLProducto.ObtenerProductoRepetido(Producto, ConnectionStringStore).Count > 0) 
    { 
     return Content(HttpStatusCode.BadRequest, "Producto repetido"); 
    } 
    if (objBLProducto.InsertarProducto(Producto, ConnectionStringStore)) 
    { 
     return Ok(Producto); 
    } 
    else 
    { 
     return InternalServerError(); 
    } 
} 

在客户端

$.ajax({ 
    url: "/API/Producto/", 
     method: "POST", 
     data: EProducto, 
     dataType: "json", 
     type: "POST", 
     success: function() { 
      toastr.success("Correcto"); 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      toastr.error(jqXHR.responseText); 
     } 
}); 

但我不能够显示客户端自定义错误。

回答

0

我发现了一个解决方案,如果你有更好的方法来做到这一点,请告诉我。 服务器端

[HttpPost] 
public IHttpActionResult CrearProducto(EProducto Producto) 
{ 
    try 
    { 
     IHttpActionResult response; 
     HttpResponseMessage responseMsg = new HttpResponseMessage(HttpStatusCode.RedirectMethod); 
     if (ConnectionStringStore == string.Empty) 
     { 
      var request = HttpContext.Current.Items["MS_HttpRequestMessage"] as HttpRequestMessage; 
      var httpContext = (HttpContextWrapper)request.Properties["MS_HttpContext"]; 
      ConnectionStringStore = httpContext.Session[EnumSession.Variable.KeyConfig.ToString()].ToString(); 
     } 
     if (objBLProducto.ObtenerProductoRepetido(Producto, ConnectionStringStore).Count > 0) { 
      responseMsg.Content = new StringContent("Elemento duplicado"); 
      response = ResponseMessage(responseMsg); 
      return response; 
     } 
     if (objBLProducto.InsertarProducto(Producto, ConnectionStringStore)) 
     { 
      return Ok(Producto); 
     } 
     else 
     { 
      return InternalServerError(); 
     } 
    } 
    catch (Exception Ex) 
    { 
     HelperLog.PutStackTrace(Ex); 
     return InternalServerError(); 
    } 
} 

客户端

  $.ajax({ 
       url: "/API/Producto/", 
       method: "POST", 
       data: EProducto, 
       dataType: "json", 
       type: "POST", 
       success: function() { 
        toastr.success("Correcto"); 
       }, 
       error: function (jqXHR, textStatus, customErrorMessage) { 
        toastr.error(jqXHR.responseText); 
       } 
      })