vistas vista una parcial pagina net mvc multiples modelos misma entre ejemplos ejemplo diferencia cargar asp jquery html ajax asp.net-mvc asp.net-mvc-partialview

jquery - vista - partial view mvc 5



Cómo representar una vista parcial en MVC5 a través de una llamada ajax a un controlador y devolver HTML (2)

Hay ayudantes ajax integrados en ASP.NET MVC que pueden cubrir los escenarios básicos.

jquery.unobtrusive-ajax instalar y jquery.unobtrusive-ajax biblioteca JavaScript jquery.unobtrusive-ajax (+ dependencia de jQuery). Luego, en su vista principal (digamos index.cshtml) ponga el siguiente código:

Index.cshtml

@Ajax.ActionLink("Load More Posts", "MorePosts", new AjaxOptions() { HttpMethod = "GET", AllowCache = false, InsertionMode = InsertionMode.InsertAfter, UpdateTargetId = "posts-wrapper" }) <div id="posts-wrapper"></div>

Nota : @Ajax.ActionLink helper acepta el parámetro AjaxOptions para más personalizaciones.

En el controlador (digamos HomeController.cs ) debe devolver PartialViewResult :

public ActionResult MorePosts(int? offset, int? count) { IEnumerable<Post> posts = myService.GetNextPosts(offset, count); return PartialView(posts); }

Finalmente, define la vista parcial MorePosts.cshtml :

@model IEnumerable<Post> @{ Layout = null; } @foreach (var post in Model) { <div class="post"> <div>>@post.Prop1</div> <div>@post.Prop2</div> </div> <hr /> }

Y eso es. Cuando algún usuario hace clic en el botón Load More , se cargarán más publicaciones.

Nota 1 : puede implementar la función OnBegin para implementar la lógica real para decidir cuáles son las siguientes publicaciones para cargar (por ejemplo, obtener la identificación de la última publicación cargada y enviarla al servidor).

Nota 2 : se puede lograr el mismo resultado con llamadas jQuery.ajax personalizadas (sin jquery.unobtrusive). Las únicas diferencias serán las llamadas manuales ajax y los eventos de clic.

Espero que esto ayude. Puedo escribir un ejemplo más completo si es necesario.

¿Cómo puedo usar AJAX para cargar una vista parcial completa renderizada en html (así que solo configuré el div.html)

¿Necesito la acción del controlador de llamada a llamada ajax que generará una vista parcial completa (roja) y la agregará al final de la que está cargada actualmente?

[Sé cómo agregar a DOM y cómo hacer llamadas AJAX]

Necesito saber cuál es el mejor enfoque de plomería para esto, qué tipo de ActionResult debería devolver la acción y si ya hay un mecanismo incorporado para evitar reinventar la rueda.


Recomiendo obtener la biblioteca Westwind.Web.Mvc de NUGET y puede ejecutar cualquiera de sus vistas en una cadena para volver como un resultado JSON

public JsonResult GetPosts() { string postsHtml = ViewRenderer.RenderPartialView("~/views/yourcontroller/_PostsPartial.cshtml",model); return Json(new { html = postsHtml }); }

Como @Guruprasad dijo en los comentarios, simplemente puede devolver una vista parcial desde un controlador MVC usando return PartialView(model) , pero con RenderPartialView lo obtiene como una cadena que puede generar como JSON junto con cualquier otro valor si es necesario . Esto funcionará si elige usar WebAPI, ya que no tiene la capacidad de representar una vista integrada.