c# - net - sintaxis razor mvc 5
Cómo hacer una vista parcial asincrónicamente (2)
En primer lugar, debe utilizar Html.Partial
como lo sugiere @buffjape. Si su vista parcial no está en la carpeta Shared
, debe especificar la ruta a la vista
@Html.Partial("~/Views/Common/FooterLatestBlogPosts", yourModel)
Sin embargo, en este caso su vista todavía se carga de forma síncrona. Para cargarlo de forma asíncrona, debe cargarlo a través de jQuery. Artículo Mejorar el rendimiento percibido de los sitios web de ASP.NET MVC con vistas parciales asíncronas proporciona una muy buena descripción sobre cómo lograrlo.
También reemplaza tu Html.Render
con
$(document).ready(function(){
$("#yourContainer").load(''@Url.Action("FooterLatestBlogPosts", "Common")'')
});
¿Se puede hacer una vista parcial de forma asíncrona?
Tengo una vista parcial que necesita para hacer las publicaciones del blog. Las publicaciones del blog se devuelven de forma asíncrona.
En mi archivo _Layout
, _Layout
mi pie de página parcial _Footer
. En _Footer
tengo el siguiente marcado:
@Html.Action("FooterLatestBlogPosts", "Common")
Así que en mi controlador Common
tengo el siguiente método de acción:
public async Task<ActionResult> FooterLatestBlogPosts()
{
List<ArticleDTO> articleDTOs = await articleTask.GetAllAsync();
return PartialView(articleDTOs);
}
En mi vista parcial de FooterLatestBlogPosts
tengo lo siguiente:
@model List<MyProject.Application.DTO.ArticleDTO>
@if (Model.Count > 0)
{
<ul class="list-unstyled">
@foreach (var articleDTO in Model)
{
<li>@articleDTO.Title</li>
}
</ul>
}
Estoy recibiendo un error:
Error executing child request for handler ''System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper''
¿Debería preferir simplemente crear un método síncrono para recuperar mis datos?
Fui con la respuesta en el post que @buffjape sugirió:
Async PartialView provoca la excepción "HttpServerUtility.Execute bloqueado ..."
Cambié todos mis métodos a síncrono.