Phi*_*hil 4 vb.net asp.net user-controls placeholder
在我的.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>
Run Code Online (Sandbox Code Playgroud)
在我的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
Run Code Online (Sandbox Code Playgroud)
结果是一个空的占位符,没有错误。
非常感谢您的协助
PS,在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
Run Code Online (Sandbox Code Playgroud)
但不幸的是仍然没有结果。
与其将UserControl声明为“ Control”类型,不如将其声明为您在UserControl.ascx文件中指定的类名:
<%@ Control className="MyUserControl" %>
Run Code Online (Sandbox Code Playgroud)
因此,在.aspx页面上的代码隐藏中:
Dim objControl as ASP.MyUserControl = CType(LoadControl("~\Controls\MyUserControl.ascx"), ASP.MyUserControl)
Run Code Online (Sandbox Code Playgroud)
有关MSDN的更多信息。
编辑:检查代码隐藏文件为您的用户控件,并请注意其中的名称空间和类名称。创建用户控件时,它会自动添加到包含文件夹名称和应用程序名称空间的名称空间。
然后,在您的.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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12277 次 |
最近记录: |