是否可以在通用处理程序(ashx)中呈现用户控件?

时间:2013-05-31 17:22:42

标签: c# .net ajax ashx

可能有更好的方法来获得我正在寻找的结果。基本上我有一个页面使用jquery.load()动态地将内容加载到div中。

到目前为止,它非常适合静态内容,但现在我有一个转发器,我希望能够包含在这个内容中。因此,我想使用通用处理程序(可能是web服务)来动态生成用户控件的呈现html,并将其插入(或附加或加载)到div中。

到目前为止,我没有运气。

最初我尝试过这种方法

        UCPeople ucPeople = new UCPeople { RoleType = (roleType.ToLower() == "board" ? RoleTypes.Board : RoleTypes.Executive) };

        TextWriter myTextWriter = new StringWriter();
        HtmlTextWriter myWriter = new HtmlTextWriter(myTextWriter);

        ucPeople.RenderControl(myWriter);

        return myTextWriter.ToString();

只返回一个空字符串。

然后我尝试将控件添加到页面实例中,它仍然是空白的。

然后我尝试将userconrol加载到新的页面实例中。

var page = new Page(){ViewStateMode = ViewStateMode.Disabled };
            UCPeople ucPeople = (UCPeople)page.LoadControl("~/our-company/people/UCPeople.ascx");

这似乎越来越远,但是用户控件会抛出错误,因为它不在表单中 当我检查该页面的表单为null时。所以我想我需要创建一个页面实例,我尝试了两种不同的方式。

        var p2 = (Page)PageParser.GetCompiledPageInstance("~/our-company/people/peopleTest.aspx",
                                                    "~/our-company/people/peopleTest.aspx", context);
        var p = (Page)System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/our-company/people/peopleTest.aspx", typeof(Page));

两者仍然产生空格式。

我没有想法。有什么建议? 感谢。

0 个答案:

没有答案