ajax - validationmessagefor - MVC Retorno Vista parcial como JSON
validate mvc form jquery (2)
¿Hay alguna manera de devolver una cadena HTML para que no represente un parcial como parte de una respuesta JSON de MVC?
public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)
{
if (ModelState.IsValid)
{
if(Request.IsAjaxRequest()
return PartialView("NotEvil", model);
return View(model)
}
if(Request.IsAjaxRequest())
{
return Json(new { error=true, message = PartialView("Evil",model)});
}
return View(model);
}
En lugar de RenderViewToString
prefiero un enfoque como
return Json(new { Url = Url.Action("Evil", model) });
entonces puedes ver el resultado en tu javascript y hacer algo como
success: function(data) {
$.post(data.Url, function(partial) {
$(''#IdOfDivToUpdate'').html(partial);
});
}
Puede extraer la cadena html del objeto PartialViewResult, similar a la respuesta a este hilo:
Renderiza una vista como una cadena
PartialViewResult y ViewResult se derivan de ViewResultBase, por lo que el mismo método debería funcionar en ambos.
Usando el código del hilo anterior, podrás usar:
public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)
{
if (ModelState.IsValid)
{
if(Request.IsAjaxRequest())
return PartialView("NotEvil", model);
return View(model)
}
if(Request.IsAjaxRequest())
{
return Json(new { error = true, message = RenderViewToString(PartialView("Evil", model))});
}
return View(model);
}