【问题标题】:ASP.NET - Load user control using AJAX?ASP.NET - 使用 AJAX 加载用户控件?
【发布时间】:2010-06-18 17:34:24
【问题描述】:

我不确定我正在尝试做的事情是否可行 - 几乎我只想使用 AJAX 调用用户控件并获取控件的呈现 html。但是,当我尝试获取控件时,我收到以下错误消息:

不提供此类页面。

说明:您请求的页面类型未提供服务,因为它已被明确禁止。扩展名“.ascx”可能不正确。请检查下面的 URL 并确保其拼写正确。

请求的 URL:/Controls/ClientFormControl.ascx

是否有可能使这种类型的页面可服务,或者您需要调用它的特定方式吗?我知道这样的事情在 MVC 框架中很容易......

提前致谢。

【问题讨论】:

  • 在这种情况下,建议使用 ASP.NET AJAX 提供的“更新面板”和“脚本管理器”。您可以根据需要隐藏用户控件并通过 AJAX 调用显示它。
  • 我认为最好的解决方案@Claudio Redi s

标签: asp.net ajax asp.net-ajax user-controls


【解决方案1】:

由于您没有提供代码,因此不确定您是如何做到的。也不知道为什么你需要这样一个奇怪的东西:-) 不是很常见,可能有另一种方法。您可以提供更多详细信息,以便我们提出更好的选择(如果有)。

我想说你可以这样做,但你需要创建控件并像这样以编程方式调用渲染

TextWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
userControl.RenderControl(htmlWriter);
string html = stringWriter.ToString();

在此之后,您必须将 html 变量附加到您的响应中。

此代码应放置在标记为 WebMethod 或 HTTP 处理程序的方法上,以便您可以从 javacript 调用它。

Sample: Calling WebMethods from javascript

Sample: Calling HTTP Handlers from javascript

【讨论】:

  • 感谢您的回答...对不起,我含糊其辞,我只是想从用户控件中获取呈现的 HTML。我应该指定我想使用 jQuery AJAX 来获取控件的 html。
  • 页面生命周期呢?你只在这里调用渲染。假设 page_load 或其他事件之一中有启动逻辑?
  • 是的,我知道,但如果他真的需要这样做,那么他需要适应它。权衡决定。
  • 我认为这是更好的解决方案。谢谢
【解决方案2】:

您没有正确看待问题。除非用户控件包含在 WebForm 中,否则无法呈现用户控件。

此问题的正确解决方案是创建一个仅包含用户控件的页面,然后根据需要对其进行渲染/注入。

或者,您可以使用更新面板,然后在服务器端以编程方式将用户控件添加到当前页面(类似于 updatepanel_load 事件)。

(实际上我的第二个解决方案似乎不起作用 - 现在检查一下)

这里是一个很好的例子:http://geekswithblogs.net/rashid/archive/2007/08/11/Loading-UserControl-Dynamically-in-UpdatePanel.aspx

看起来诀窍是一个占位符和一个我不知道 LoadControl() 的函数。 System.Web.UI.TemplateControl.LoadControl

PlaceHolder1.Controls.Clear();
UserControl uc = (UserControl)LoadControl(controlPath);
PlaceHolder1.Controls.Add(uc);

【讨论】:

  • 不敢相信我没想到只是将控件放在页面上并调用该页面。有点糟透了,你不能只通过它自己呈现控件......现在我将不得不制作一堆只有控件标签的 .aspx 页面......
  • 我去过那里。我也花了一段时间才意识到第一次。这种方法的唯一问题是您需要在客户端过滤掉 html 标签,除非您将其放入 iframe。此外,您可能会遇到一些关于事件处理方式的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 2011-08-15
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多