gpt4 book ai didi

c# - 如何异步渲染局部 View

转载 作者:IT王子 更新时间:2023-10-29 04:29:52 24 4
gpt4 key购买 nike

局部 View 可以异步呈现吗?

我有一个局部 View 需要呈现博客文章。博客文章异步返回。

在我的 _Layout 文件中,我渲染了部分页脚 _Footer。在 _Footer 中,我有以下标记:

@Html.Action("FooterLatestBlogPosts", "Common")

所以在我的 Common Controller 中,我有以下操作方法:

public async Task<ActionResult> FooterLatestBlogPosts()
{
List<ArticleDTO> articleDTOs = await articleTask.GetAllAsync();

return PartialView(articleDTOs);
}

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

@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'

我是否应该只创建一个同步方法来取回我的数据?

最佳答案

首先,您需要按照@buffjape 的建议使用Html.Partial。如果您的部分 View 不在 Shared 文件夹中,您需要指定 View 的路径

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

但是在这种情况下,您的 View 仍然是同步加载的。要以异步方式加载它,您需要通过 jQuery 加载它。文章Improve perceived performance of ASP.NET MVC websites with asynchronous partial views对如何实现它给出了很好的描述。

同时将 Html.Render 替换为

$(document).ready(function(){
$("#yourContainer").load('@Url.Action("FooterLatestBlogPosts", "Common")')
});

关于c# - 如何异步渲染局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33913836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com