加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 我们如何使用通用处理程序加载usercontrol?

发布时间:2020-12-16 03:25:45 所属栏目:asp.Net 来源:网络整理
导读:我想使用 jquery ajax加载用户控件.我发现一个可能是通过通用处理程序加载usercontrol.任何人都帮助我.这里是我用来调用控件的ajax代码. script type="text/javascript" function fillSigns() { $.ajax({ url: "usercontrolhandler.ashx?control=signs.ascx"
我想使用 jquery ajax加载用户控件.我发现一个可能是通过通用处理程序加载usercontrol.任何人都帮助我.这里是我用来调用控件的ajax代码.

<script type="text/javascript">
 function fillSigns() { 
                $.ajax({
                    url: "usercontrolhandler.ashx?control=signs.ascx",context: document.body,success: function (data) {                       
                        $('#signdiv').html(data);
                    }
                });
            }  
 </script>

这是处理程序文件中的代码

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        Page page = new Page();
        UserControl ctrl = (UserControl)page.LoadControl("~/" + context.Request["control"] + ".ascx");      
        page.Form.Controls.Add(ctrl);

        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter tw = new HtmlTextWriter(stringWriter);
        ctrl.RenderControl(tw);
        context.Response.Write(stringWriter.ToString());
    }

此代码在下面显示的行中引发对象引用未找到错误.

page.Form.Controls.Add(ctrl);

解决方法

似乎page.Form在这里为空,这就是为什么你有一个空引用异常.您可以将用户控件添加到页面的控件集合中:

page.Controls.Add(ctrl);

您还可以使用HttpServerUtility.Execute方法进行页面呈现:

StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(page,output,false);

最后看看Scott Guthrie的Tip/Trick: Cool UI Templating Technique to use with ASP.NET AJAX for non-UpdatePanel scenarios文章,它涵盖了你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读