asp.net NET -使用AJAX加载用户控件?

a1o7rhls  于 12个月前  发布在  .NET
关注(0)|答案(2)|浏览(107)

我不确定我正在尝试做的是否可行--我只是想用AJAX调用一个用户控件,并获取控件的呈现html。但是,当我尝试获取控件时,我得到以下错误消息:
此类型的页面不提供。
产品描述:您所请求的页面不存在,可能已被删除或您输错了网址!扩展名“.ascx”可能不正确。请检查以下URL并确保其拼写正确。
请求的URL:/Controls/ClientFormControl.ascx
是否有可能使这种类型的页面可服务,或者有一个特定的方式,你需要调用它?我知道这些事情在MVC框架中很容易。
先谢了。

xeufq47z

xeufq47z1#

不知道你是怎么做到的,因为你没有提供代码。也不知道为什么你会需要这样一个奇怪的东西:-)不是很常见,可能有一个替代的方法。您可以提供更多细节,以便我们可以建议更好的选择。
我认为你可以这样做,但是你需要像这样创建控件并调用渲染

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

在此之后,您必须将html变量附加到响应中。
这段代码应该放在一个标记为WebMethod或HTTP Object的方法上,这样你就可以从你的javacript调用它。
Sample: Calling WebMethods from javascript
Sample: Calling HTTP Handlers from javascript

yrdbyhpb

yrdbyhpb2#

你没有正确地看待问题。用户控件只有包含在WebForm中才能呈现。
这个问题的正确解决方案是创建一个页面,其中只包含usercontrol,然后根据需要呈现/注入它。
或者,您可以使用updatepanel,然后在服务器端以编程方式将用户控件添加到当前页(类似于updatepanel_load事件)。
(实际上,看起来我的第二个解决方案不起作用-现在就去看看吧)
下面是一个很好的例子:Link
看起来诀窍是一个占位符和一个我不知道LoadControl()的函数。System.Web.UI.TemplateControl.LoadControl

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

相关问题