gpt4 book ai didi

asp.net - 以编程方式将用户控件加载到占位符 (asp.net)

转载 作者:行者123 更新时间:2023-12-05 00:06:56 27 4
gpt4 key购买 nike

在我的 .aspx 页面中,我有;

    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" AspCompat="True" %>

<%@ Register src="Modules/Content.ascx" tagname="Content" tagprefix="uc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="Modulecontainer" runat="server"></asp:PlaceHolder>
</div>
</form>
</body>
</html>

在我的 aspx.vb 中有;
    Try
Dim loadmodule As UserControl
loadmodule = Me.LoadControl("~/modules/content.ascx")
Modulecontainer.Controls.Add(loadmodule)
Catch ex As Exception
Response.Write(ex.ToString & "<br />")
End Try

结果是一个空的占位符并且没有错误。

非常感谢您的帮助

P.S 在 Fat_Tony 的回答之后,我将代码更改为;
Try
Dim loadmodule As ASP.ContentModule
loadmodule = CType(LoadControl("~\Modules\Content.ascx"), ASP.ContentModule)
Modulecontainer.Controls.Add(loadmodule)
Catch ex As Exception
Response.Write(ex.ToString & "<br />")
End Try

但遗憾的是仍然没有结果。

最佳答案

与其将您的 UserControl 声明为“Control”类型,不如将其声明为您在 UserControl.ascx 文件中指定的类名:

<%@ Control className="MyUserControl" %>

因此,在 .aspx 页面上的代码隐藏中:
Dim objControl as ASP.MyUserControl = CType(LoadControl("~\Controls\MyUserControl.ascx"), ASP.MyUserControl)

更多信息请访问 MSDN .

编辑:检查用户控件的代码隐藏文件,并记下其中的命名空间和类名。当我创建我的用户控件时,它会自动添加到包含文件夹名称以及应用程序 namespace 的 namespace 中。

然后,在您的 .aspx.vb 中,将 .ascx.vb 文件中的“ASP.ContentModule”替换为“Namespace.ClassName”。此外,请确保您仍在调用占位符上的 Add 方法。

我的示例使用 C#,但如果您需要,我可以使用 vb。我的应用程序被方便地命名为“Tester”。

ASCX 代码隐藏:
namespace Tester.modules
{
public partial class content : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{

}
}
}

ASPX 代码隐藏:
namespace Tester
{
public partial class _Default : System.Web.UI.Page
{
private Namespace.ClassName loadmodule;
protected void Page_Load(object sender, EventArgs e)
{
loadmodule = (Namespace.ClassName)LoadControl("~/modules/content.ascx");
Modulecontainer.Controls.Add(loadmodule);
}
}
}

关于asp.net - 以编程方式将用户控件加载到占位符 (asp.net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644250/

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