首页 > 解决方案 > 在 ASP.NET Core Razor 页面中加载带有数据的选项卡(没有实体框架)

问题描述

我正在使用 ASP.NET Core Razor 页面和 Oracle 数据库。团队决定不使用实体框架,现在我正准备使用 ODP.net(Oracle 的 ADO.NET 版本)从数据库加载数据。

我知道使用实体框架,我可以利用异步编程,但因为我不是,所以加载页面很慢(因为我一次查询所有选项卡)。我正在使用 Bootstraps 导航选项卡。

一切正常,但现在数据集越来越大,因为页面加载时加载了十多个选项卡。有没有办法只在点击时加载每个标签?还有其他方法可以解决这个问题吗?

标签: c#asp.netasp.net-corerazor-pages

解决方案


不确定我是否完全理解你的问题。但是我如何阅读此问题是,每当标签更改时,您都必须加载页面,并且不想在开始时立即加载整个页面。正如我所见,这与您在后端使用的 ORM 无关。当用户单击选项卡并在该选项卡下加载部分页面时,需要对服务器进行异步 javascript 调用。

https://getbootstrap.com/docs/4.0/components/navs/

  1. show.bs.tab(在要显示的选项卡上)
  2. shown.bs.tab(在新激活的刚刚显示的选项卡上,与 show.bs.tab 事件相同)

我建议您使用第一个事件,并在该事件中对部分页面进行 ajax 调用。

https://www.learnrazorpages.com/razor-pages/ajax/partial-update

@page
@model RazorPagesTests.Pages.AjaxPartialModel
<h2>Ajax</h2>
<p><button class="btn btn-primary" id="load">Load</button></p>
<div id="grid"></div>
@section scripts{
    <script>
        document.getElementById('load').addEventListener('click', () => {
            fetch('/ajaxpartial?handler=CarPartial')
                .then((response) => {
                    return response.text();
                })
                .then((result) => {
                    document.getElementById('grid').innerHTML = result;
                });
        });
    </script>
}

希望能帮助到你。如果没有,那么我在这里为您提供帮助。请给我更多信息你想做什么。


推荐阅读