Bre*_*ogt 22 c# asp.net asp.net-mvc razor asp.net-mvc-4
部分视图可以异步渲染吗?
我有部分视图需要呈现博客帖子.博客文章以异步方式返回.
在我的_Layout
文件中,我渲染了我的部分页脚_Footer
.在_Footer
我有以下标记:
@Html.Action("FooterLatestBlogPosts", "Common")
Run Code Online (Sandbox Code Playgroud)
所以在我的Common
控制器中我有以下操作方法:
public async Task<ActionResult> FooterLatestBlogPosts()
{
List<ArticleDTO> articleDTOs = await articleTask.GetAllAsync();
return PartialView(articleDTOs);
}
Run Code Online (Sandbox Code Playgroud)
在我的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>
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'
Run Code Online (Sandbox Code Playgroud)
我是否应该创建一个同步方法来恢复我的数据?
And*_*iuc 35
首先,您需要Html.Partial
按照@buffjape的建议使用.如果部分视图不在Shared
文件夹中,则需要指定视图的路径
@Html.Partial("~/Views/Common/FooterLatestBlogPosts", yourModel)
但是在这种情况下,您的视图仍然是同步加载的.要以异步方式加载它,您需要通过jQuery加载它.文章使用异步部分视图提高ASP.NET MVC网站的感知性能,可以很好地描述如何实现它.
也替换你Html.Render
的
$(document).ready(function(){
$("#yourContainer").load('@Url.Action("FooterLatestBlogPosts", "Common")')
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44486 次 |
最近记录: |