当前位置:  开发笔记 > 后端 > 正文

当我在运行时实例化ASP.NET用户控件时,为什么忽略ASCX文件?

如何解决《当我在运行时实例化ASP.NET用户控件时,为什么忽略ASCX文件?》经验,为你挑选了1个好方法。

我已经创建了一个常规的ASP.NET用户控件,包括ascx文件.例如:

MyUserControl.ascx
MyUserControl.ascx.cs

然后我尝试在运行时使用类似于以下代码的代码手动渲染控件:

var testMyUserControl = new MyUserControl();
var textWriter = 
    new HtmlTextWriter(
        new System.IO.StringWriter(new StringBuilder()));
testMyUserControl.RenderControl(textWriter);
Console.Write(textWriter.InnerWriter.ToString());

我放在ASCX文件中的任何内容似乎都没有呈现 - 静态HTML或任何.NET控件.

但是,如果我在代码隐藏中覆盖Render()方法并手动输出内容,则会进行渲染.

我在这里错过了什么?



1> Adam Lassek..:

您不需要自己渲染控件.如果您需要动态地将其添加到页面,您可以这样做:

UserControl myControl = (UserControl) Page.LoadControl("~/Controls/MyControl.ascx");
Page.Controls.Add(myControl);

很可能你会想把它放在页面的某个部分,所以不要使用Page.Controls,而是使用占位符:


并使用这样的代码:

myPlaceholder.Controls.Add(myControl);

这是动态添加控件的最佳方法,但是如果你可以以声明方式执行它,那将会更容易.

<%@ Register TagPrefix="my" TagName="Control" Src="~/Controls/MyControl.ascx" %>


请记住:如果您要动态添加控件,请务必在每次加载页面时重新添加控件.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有