如何异步渲染局部视图

局部视图是否可以异步渲染

我有一个需要渲染博客文章的局部视图。博客帖子是异步返回的

在我的\u布局文件中,我呈现了我的部分页脚\u页脚。在\u Footer中,我有以下标记:

@Html.Action(“FooterLatestBlogPosts”,“Common”)

因此,在我的Common控制器中,我有以下操作方法:

公共异步任务<行动结果>FooterLatestBlogPosts()
{
List<ArticleDTO>articleDTOs=等待articleTask.GetAllAsync();
返回部分视图(articleDTOs);
}

在我的FooterLatestBlogPosts部分视图中,我有以下内容:

@型号列表<MyProject.Application.DTO.ArticleDTO>
@如果(Model.Count>0)
{
<ul class=“列表未样式化”>
@foreach(模型中的var articleDTO)
{
<li>@articleDTO.Title</li>
}
</ul>
}

我得到一个错误:

执行处理程序’System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper’的子请求时出错

我应该创建一个同步方法来恢复我的数据吗

首先,您需要使用@buffjape建议的Html.Partial。如果您的局部视图不在共享文件夹中,则需要指定视图的路径

@Html.Partial(“~/Views/Common/FooterLatestBlogPosts”,yourModel)

但是,在这种情况下,视图仍然是同步加载的。要以异步方式加载它,您需要通过jQuery加载它。文章通过异步局部视图提高ASP.NET MVC网站的感知性能,对如何实现这一点进行了很好的描述

还可以将Html.Render替换为

$(文档).ready(函数(){
$(“#yourContainer”).load('@Url.Action(“FooterLatestBlogPosts”,“Common”))
});

发表评论