2017-06-01 118 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); 
       } 
      })