gpt4 book ai didi

c# - 如何在没有从服务器呈现两个完整页面的情况下将 WebForms 页面加载到 iframe 中?

转载 作者:行者123 更新时间:2023-11-30 13:36:05 25 4
gpt4 key购买 nike

我有一种外壳页面,其中包含过滤器控件和用于显示 GridView 的 iframe。当您单击“过滤器”按钮或触发计时器时,将从过滤器控件收集过滤器数据并将查询字符串提供给 gridview iframe,如下所示:

var URL = "/mypage/gridview.aspx";
var dest = URL + '?' + getFilterData();
var frame = $('#gridiframe');
$.ajax({
type: "HEAD",
async: true,
url: dest
}).success(function () {
frame.attr('src', dest);
})
.error(loadError);

我的难题是:渲染 gridview 的成本可能非常高。它执行巨大的数据库访问,此方法导致页面呈现两次。第一次,客户端只查看 header 以确保用户已通过身份验证(如果 session 超时,页面返回未经授权的 HTTP)并且所有参数都采用正确的格式。但我不想更改 iframe 源以显示错误消息,我只想调用 loadError,它基本上只是通知用户出了什么问题。

我可以用客户端代码做些什么来在与服务器的一次交换中填充我的 iframe 吗?

编辑:感谢大家的投入。归根结底,我讨厌网络表单。故事结束。

最佳答案

不是在 ajax 查询中查询 iframe 的源 URL,而是查询不运行相同数据库查询的不同端点。你说它做了两件事,1 验证用户的登录 token 仍然有效,2 过滤器参数有效。这些验证步骤都不需要在获得完整查询结果的数据库上运行查询。因此,创建一个新的 API 端点来执行基本验证,如果返回成功消息,则将 iframe 源设置为您想要的。

另一种选择是从 gridview.aspx 返回 HTML 片段,而不是完整的 HTML 页面。然后,如果成功,您的 AJAX 可以用 HTML 结果替换 div 的内容,而不是设置 iframe src,同时仍然允许您处理错误。

一个更时髦的选择(不是说它好或坏,但肯定更符合当前的网络开发行业)是将 gridview.aspx 更改为以简化的 json 返回数据的网络服务/api,然后使用 javascript框架或模板引擎在客户端本身生成 html 表。

关于c# - 如何在没有从服务器呈现两个完整页面的情况下将 WebForms 页面加载到 iframe 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39778961/

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