使用fetch()API返回部分视图



fetch api在这里作为旧 XMLHttpRequest api的现代替代品。

许多JavaScript库,例如jQuery,Mootools,Prototype和Zepto等,添加已成为em de em exto exto 标准的非标准 X-Requested-With请求标头,并得到许多JavaScript库以及Web应用程序的支持诸如Ruby上的Ruby,Laravel,Sinatra,Spring,Symfony,ASP.NET MVC等框架等框架

正如JavaScript所现代化的jQuery一直在失去突出性,Angularjs用来发送XMLHttpRequest标头,但不再这样做。ASP.NET Core MVC不再包含IsAjaxRequest扩展方法。

许多Web应用程序框架具有"部分视图"的概念,因此可以在没有标头和页脚的情况下返回视图。

如何根据fetch()请求返回部分视图?

我可以将X-Requested-With标头添加到提取请求中飞行选项请求等

这些人说应该使用Accept标头。但是我该怎么办?我想返回两种请求的HTML内容,只是fetch()请求应获得页面的一个子集(内容但没有标题和页脚)。

Accept标题的值是多少?

if page_is_requested_by_fetch_api:
    return content
else:
    return header + content + footer

对我来说,似乎无法使用Accept标头。我看不出如何使用它。正常请求页面时,请求部分视图时,我需要HTML内容,即text/html

  • 我应该使用Accept标头并发明自己的非标准哑剧类型,例如text/partial+html
  • 我应该将X-Requested-With添加到我的fetch()请求的标题上吗?
  • 我应该附加一个查询字符串,例如/page?type=partialview
  • 我应该有不同的HTTP端点,例如/Account/Login/Account/LoginPartial
  • 我应该获取整页,解析DOM并提取<main>元素的内容?

您的问题:如何返回部分视图以响应fetch()请求?

我自己在剃须刀页面上使用它。这是JavaScript代码

fetch(url)
        .then((response) => { return response.text(); })
        .then((result) => {
                $('#container').html(result);
        });

这是cshtml.cs文件中的代码。我想MVC中的控制器将是相同的:

public async Task<PartialViewResult> OnGetSomeObjectList()
{
    return new PartialViewResult()
    {
        ViewName = "NAME_OF_PARTIAL_VIEW",
        ViewData = new ViewDataDictionary<IEnumerable<object>>(ViewData, new List<object>()
        {
            new object(),
            new object()
        })
    };
}

相关内容

  • 没有找到相关文章

最新更新