局部视图是否可以异步渲染
我有一个需要渲染博客文章的局部视图。博客帖子是异步返回的
在我的\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”))
});