C#学习教程:以编程方式呈现WebUserControl然后我在两个项目中引用这个项目:RESTAPI(这是一个类库项目)和主网站。我确信在网站上这很简单,只需在任何面板中使用Controls.Add或ASP.NETControls.Add。但是API呢?有什么方法可以通过了解控件的类型来呈现此控件的HTML吗?RenderControl方法不会向编写器写入任何HTML,因为控件的生命周期甚至还没有开始。请记住,我没有Web项目中的控件,因此我没有ascx文件的虚拟路径。所以LoadControl方法在这里不起作用。所有控件实际上都源自相同的基本控件。我可以在这个基类中做什么来允许我从一个全新的实例加载控件?这是我最近所做的并且工作正常,但如果您在ASP.NET应用程序中使用它,则理解回发将不起作用。[WebMethod]publicstaticstringGetMyUserControlHtml(){returnRenderUserControl("Com.YourNameSpace.UI","YourControlName");}publicstaticstringRenderUserControl(stringassembly,stringcontrolName){FormlessPagepageHolder=newFormlessPage(){AppRelativeTemplateSourceDirectory=HttpRuntime.AppDomainAppVirtualPath};//允许“~/”路径来解析动态控制=null;//assembly="Com.YourNameSpace.UI";//示例//controlName="YourCustomControl"stringfullyQaulifiedAssemblyPath=string.Format("{0}.{1},{0}",assembly,controlName);输入type=Type.GetType(fullyQaulifiedAssemblyPath);if(type!=null){control=pageHolder.LoadControl(type,null);control.Bla1="测试";//如果需要,绕过属性设置器的编译时检查control.Blas2=true;}pageHolder.Controls.Add(control);StringWriteroutput=newStringWriter();HttpContext.Current.Server.Execute(pageHolder,output,false);返回输出.ToString();}发布icclassFormlessPage:Page{publicoverridevoidVerifyRenderingInServerForm(Controlcontrol){}}这应该可以工作您可以创建该类型的控件并使用您自己的HtmlTextWriter。以上就是C#学习教程:编程呈现WebUserControl分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
