validator validationmessagefor validate net mvc form asp ajax asp.net-mvc validation

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); }