可以异步渲染部分视图吗?
我有一个需要渲染博客文章的部分视图。博客文章异步返回。
In my _Layout
文件我渲染我的部分页脚_Footer
. In _Footer
我有以下标记:
@Html.Action("FooterLatestBlogPosts", "Common")
所以在我的Common
控制器我有以下操作方法:
public async Task<ActionResult> FooterLatestBlogPosts()
{
List<ArticleDTO> articleDTOs = await articleTask.GetAllAsync();
return PartialView(articleDTOs);
}
In my FooterLatestBlogPosts
部分观点我有以下内容:
@model List<MyProject.Application.DTO.ArticleDTO>
@if (Model.Count > 0)
{
<ul class="list-unstyled">
@foreach (var articleDTO in Model)
{
<li>@articleDTO.Title</li>
}
</ul>
}
我收到错误:
Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'
我应该创建一个同步方法来带回我的数据吗?
首先你需要使用Html.Partial
正如@buffjape所建议的。如果您的部分视图不在Shared
需要指定查看路径的文件夹
@Html.Partial("~/Views/Common/FooterLatestBlogPosts", yourModel)
但是在这种情况下,您的视图仍然会同步加载。要以异步方式加载它,您需要通过 jQuery 加载它。文章使用异步部分视图提高 ASP.NET MVC 网站的感知性能 http://blog.michaelckennedy.net/2012/11/13/improve-perceived-performance-of-asp-net-mvc-websites-with-async-partialviews/关于如何实现它给出了很好的描述。
还要更换你的Html.Render
with
$(document).ready(function(){
$("#yourContainer").load('@Url.Action("FooterLatestBlogPosts", "Common")')
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)