c# - 使用 Ajax 加载用户控件

标签 c# asp.net ajax

我试图找到使用 Ajax 加载用户控件的最佳实践。

我的第一种方法是简单地使用 UpdatePanel 并在 ajax 回传上使用 LoadControl() 弹出它,但这会在同一个 UpdatePanel 中重新呈现其他加载的用户控件。此外,我不能有一组预定义的 UpdatePanel,因为我需要加载的 UserControl 的数量会有所不同。

是否有针对此类场景的最佳实践?

如果需要,我可以实现一个框架或某种类型的自定义控件(如果这是一种解决方案),但如果可能的话,我很乐意使用 ASP.NET 3.5 和 AjaxControlToolkit 来实现这一点。

最佳答案

可能有许多不这样做的高雅理由,但只是简单地初始化一个页面,添加用户控件,然后执行并将生成的 HTML 转储到任何你认为合适的地方,(在我简单的观点中)如此介意 - NumPy 的快速和有趣,我不得不提一下......

跳过 UpdatePanel,只需使用一个标签、一个普通的旧跨度,或者一个首字母缩略词怎么样...

在客户端使用 JQuery:

$('#SomeContainer').Load("default.aspx?What=GimmeSomeSweetAjax");

服务器端:

if(Request.QueryString["What"]==GimmeSomeSweetAjax)
{
   Page page = new Page();
   Control control = (Control)LoadControl("~/.../someUC.ascx");
   StringWriter sw = new StringWriter();
   page.Controls.Add(control);
   Server.Execute(page, sw, false);
   Response.Write(sw.ToString());
   Response.Flush();
   Response.Close();
}

没有其他任何东西执行,页面的生命周期有一个真正的 Kevorkian 时刻;-)

关于c# - 使用 Ajax 加载用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279324/

相关文章:

c# - 指定的数据无法解密

c# - Entity Framework 6 : Master-Detail view shows single HashSet instead of filtered detail items

c# - 什么是 Microsoft.DependencyValidation.Analyser,为什么 Visual Studio 2017 会强制安装包?

javascript - 如何禁用 cookie 覆盖?

php - echo $data[ ] 获取数据库中的特定行

javascript - ajax 在 IE 8 中非常慢,但在 firefox 和 chrome 中非常快

c# - PV 函数和将 VB6 移植到 C#

javascript - 是否可以防止直接打开弹出窗口而不是通过 Javascript 打开?

c# - 异常返回 : unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

jquery - $.ajax() 方法数据