如何避免对UserControl的Reference进行硬编码?

时间:2013-03-30 12:07:31

标签: c# asp.net user-controls reference

我想知道是否有动态方法来避免对UserControl的Reference进行硬编码或“使用”?

<%@ Reference Control="~/UserControl.ascx" %>
using UserControl;

我正在寻找一种方法,可以从后面的代码动态地将UserControls的引用添加到页面中。

1 个答案:

答案 0 :(得分:1)

如果我已正确理解你的问题,这应该做你想做的事 -

Default.aspx的

<!DOCTYPE html>
<html>
<head runat="server">
    <title>Dynamic User Control Test</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>Dynamic User Control Test</h1>
        <asp:PlaceHolder ID="UserControlPlaceHolder" runat="server"></asp:PlaceHolder>
    </div>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Web.UI;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        UserControl uc = Page.LoadControl("~/UserControl.ascx") as UserControl;

        if (uc != null)
        {
            UserControlPlaceHolder.Controls.Add(uc);
        }
    }
}

UserControl.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserControl.ascx.cs" Inherits="UserControl" %>

<p>Here is some content inside the user control</p>

UserControl.ascx.cs(如果UserControl是静态的并且不包含特定于解决方案的代码,则不需要这样做)

using System;

public partial class UserControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

这仅适用于动态添加到页面的控件。