gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:08:07 25 4
gpt4 key购买 nike

我创建了一个常规 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() 方法并手动输出内容,它就会渲染。

我在这里缺少什么?

最佳答案

您不需要自己呈现控件。如果您需要将其动态添加到页面,您可以这样做:

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

您很可能希望将其放置在页面的特定部分,因此不要使用 Page.Controls,而是使用占位符:

<asp:Placeholder ID="myPlaceHolder" runat="server" />

并使用这样的代码:

myPlaceholder.Controls.Add(myControl);

这是动态添加控件的最佳方式,但如果您可以以声明方式添加控件,那就容易多了。

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

<my:Control ID="myControl" runat="server" />

记住:如果您要动态添加控件,请务必 re-add the control every page load .

关于asp.net - 当我在运行时实例化 ASP.NET 用户控件时,为什么它会忽略 ASCX 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/441299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com