gpt4 book ai didi

ASP.NET 和 ajax 响应

转载 作者:行者123 更新时间:2023-12-04 16:07:14 25 4
gpt4 key购买 nike

我有一个主网页(“基本页面”),它对服务器进行 ajax 调用(使用 jQuery)。服务器端页面(“Ajax 页面”)是一个 ASP.NET 网络表单(此处未使用 MVC)。因为(在这种情况下)我使用 GridView 在 ajax 响应中呈现数据,所以我必须包含

标记。

我的提示是——当基本页面收到 AJAX 响应时,它会将其插入到 DOM 中,但是因为 AJAX 响应由包含 标记的 HTML 标记组成,这有时会导致嵌套的 html 表单,这很糟糕。

我意识到我可以使用 jquery 只将响应的一个片段插入到基本页面 DOM 中——或者我可以使用 jquery 随后删除有问题的 标记。但这些感觉像是笨拙的解决方法。真的没有办法阻止 ASP.NET 页面使用 标记提供响应吗?我意识到表单标签是 ASP.NET 网络表单模型的核心,但它确实使在 ASP.NET 中使用 AJAX 成为一件复杂的事情——非常逆流而上。 Microsoft 肯定已经意识到回发/服务器端模型已成为过去吗?

我也意识到 Microsoft 有一些服务器端 AJAX 库可能会解决这个问题——但我仍然想知道是否有 ASP.NET webforms 的本地解决方案。

有什么建议吗?

最佳答案

您可以将 GridView 添加到 Web 用户控件,然后将其呈现为这样的字符串:

public static string ExecuteToString(this Control control)
{
Page page = new Page();
page.Controls.Add(control);

StringBuilder sb = new StringBuilder();
using (StringWriter writer = new StringWriter(sb))
{
HttpContext.Current.Server.Execute(page, writer, false);
}
return sb.ToString();
}

这意味着您不需要将 ajax 请求指向页面。您可以使用网络服务。查询特定方法,然后动态加载用户控件,将其呈现为字符串并返回 HTML。因为您将 HTML 和代码放在用户控件中,所以您无需担心剥离表单标签,您仍然可以像在页面上一样使用所有 asp 控件。

我不知道使用这种方法的性能成本,但我已经使用了一段时间,对我来说似乎没问题。

关于ASP.NET 和 ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232262/

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