可能有更好的方法来获得我正在寻找的结果。基本上,我有一个使用 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");
这似乎更进一步,但用户控件抛出错误,因为它不在表单中。
当我检查该页面的表单为空时。所以我想我需要创建一个页面实例,我尝试了两种不同的方式。
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));
两者仍然产生一个空形式。
我没主意了。有什么建议么?谢谢。