可能有更好的方法来获得我正在寻找的结果。基本上我有一个页面使用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));
两者仍然产生空格式。
我没有想法。有什么建议? 感谢。