Tengo un formulario creado utilizando código de acción Ajax.BeginForm()
Como llegar statusDescription de HttpStatusCodeResult por JavaScript
<% using (Ajax.BeginForm("UpdateCompanyShop", "CompanyShop", FormMethod.Post,
new AjaxOptions { OnSuccess = "updateList", OnFailure = "onError",
UpdateTargetId="slist", LoadingElementId = "loading" }))
controlador es como abajo:
if(string.IsNullOrEmpty(company.Address))
return new HttpStatusCodeResult(418, "Please fill in address");
else if (company.DistrictID < 0)
return new HttpStatusCodeResult(418, "Please select district");
else
return new HttpStatusCodeResult(418, "Error saving data");
Solía onFailure = "onError" en AjaxOptions y yo tener mi script del lado del cliente como este
function onError(response, status, error) {
var statusDescription = ***something***;
alert(statusDescription);
}
Yo uso depurador en el Jav ascript pero no puede encontrar el (el segundo parámetro en HttpStatusCodeResult
) StatusDescription
alguna idea de cómo puedo conseguir descripción del estado? O no debería usar HttpStatusCodeResult
en absoluto? ¿Cuál es la forma correcta de devolver el error (aparte de la validación) en el envío de AJAX?
Sergi, yo uso depurador para comprobar que hay 4 propiedades. En mi caso, tienen los valores readyState = 4, responseText = "", status = 418 y statusText = "error", ninguno de ellos igual a la cadena de descripción del estado. – newcoder
@newcoder - Creo que es porque no estás utilizando javascript discreto en tu aplicación MVC; Tomemos una tercera publicación: [Ajax discreto en ASP.NET MVC 3] (http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-ajax.html) –
@Sergi Papaseit, puedo ver que tener javascript discreto habilitado como se menciona en su artículo. También veo que la etiqueta del formulario está usando data-ajax. Lo único especial es que la forma ajax está dentro de una vista parcial que se carga dinámicamente por un actionlink. Pero todo funciona bien, excepto después de que se devuelve HttpStatusCodeResult. – newcoder