Asp.net 如何使用泛型处理程序加载usercontrol?
我想使用jqueryajax加载一个用户控件。我发现一种可能的方法是通过泛型处理程序加载usercontrol。有人帮我吗。这里是我用来调用控件的ajax代码Asp.net 如何使用泛型处理程序加载usercontrol?,asp.net,ajax,generics,user-controls,handler,Asp.net,Ajax,Generics,User Controls,Handler,我想使用jqueryajax加载一个用户控件。我发现一种可能的方法是通过泛型处理程序加载usercontrol。有人帮我吗。这里是我用来调用控件的ajax代码 <script type="text/javascript"> function fillSigns() { $.ajax({ url: "usercontrolhandler.ashx?control=signs.ascx",
<script type="text/javascript">
function fillSigns() {
$.ajax({
url: "usercontrolhandler.ashx?control=signs.ascx",
context: document.body,
success: function (data) {
$('#signdiv').html(data);
}
});
}
</script>
此代码在下面显示的行中引发“找不到对象引用”错误
page.Form.Controls.Add(ctrl);
似乎
page.Form
在这里是null
,这就是为什么会出现null引用异常。您可以将用户控件添加到页面的控件集合:
page.Controls.Add(ctrl);
您还可以使用以下方法进行页面呈现:
StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(page, output, false);
最后看一看Scott Guthrie的一篇文章,这篇文章涵盖了您的问题。试试这个:
Page page = new Page {ViewStateMode = ViewStateMode.Disabled};
HtmlForm form = new HtmlForm { ViewStateMode = ViewStateMode.Disabled };
form.Controls.Add(ctrl);
page.Controls.Add(form);
然后:
无需创建
页面
对象来呈现用户控件
。删除那个代码,你就没事了。
Page page = new Page {ViewStateMode = ViewStateMode.Disabled};
HtmlForm form = new HtmlForm { ViewStateMode = ViewStateMode.Disabled };
form.Controls.Add(ctrl);
page.Controls.Add(form);
StringWriter stringWriter = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(stringWriter);
page.RenderControl(tw);
context.Response.Write(stringWriter.ToString());