如何在用户控件中访问此asp.net Panel控件并使其可见?

时间:2015-01-25 18:44:54

标签: c# asp.net

我是一名新的ASP.NET Web Forms开发人员,我现在正在努力将部分用户控件隐藏在某些基于某些因素的页面中。

用户控件的ASP.NET代码:

<div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Panel ID="pnlView" runat="server" CssClass="panel">
                <span class="lead text-info">This is a simple test user control</span>
            </asp:Panel>
            <asp:Panel ID="pnlActions" runat="server" Visible="false">
                <asp:Button ID="btnConfirm" runat="server" Text="Confirm" CssClass="btn btn-primary btn-lg"
                    OnClick="btnConfirm_Click" />
                <asp:Button ID="btnReject" runat="server" Text="Reject" CssClass="btn btn-danger"
                    OnClick="btnReject_Click" />
                <asp:Label ID="lblInfo" runat="server" Text="" CssClass="label label-info"></asp:Label>
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

用户控件的代码隐藏:

protected void btnConfirm_Click(object sender, EventArgs e)
    {
        lblInfo.Text = "Confirmed";
    }


    protected void btnReject_Click(object sender, EventArgs e)
    {
        lblInfo.Text = "Rejected";
    }

应根据要访问具有此用户控件的.aspx页面的用户的用户名显示ID为“pnlActions”的asp.net面板。 那我怎么能这样做?

这是.aspx页面的ASP.NET代码:

 <div class="row">
    <div class="col-md-6">
        <span class="lead">This is the user control</span>
        <uc:TestUserControl ID="TestUserControl1" runat="server"></uc:TestUserControl>
    </div>
    <div class="col-md-6">
        <p class="well">
            The user control on the left side has an asp.net panel control which
        has two buttons. These two buttons should be shown if the user 
        is an administrator, and they should be hidden for the rest of users.
        This user control will be used on four pages across this test application.
        </p>
    </div>
</div>

.aspx页面的代码隐藏:

 string username = "JohnA";

protected void Page_Load(object sender, EventArgs e)
{
    if (username == "JohnA")
    {
        //pnlActions control in the user control should be displayed
    }
    else
    { 
        //pnlActions control should be hidden
    }
}

3 个答案:

答案 0 :(得分:0)

这些控件特定操作应放在您的用户控件代码后面,而不是放在页面布局中,以提供更多模块化。

稍后我们的目标是将所有这些自定义组件放在页面上的不同变体中,这就是自定义用户控件的重点。

您无法通过将各个组件的业务逻辑放在布局中来实现这一目标。

如果您真的想要这样做,您可以通过在控件代码后面的公共属性公开您的面板或修改设计器代码来实现它(并不总是一个好主意......)。

你可以阅读这篇文章: http://www.codeproject.com/Articles/28783/Your-First-ASP-NET-Custom-Control

答案 1 :(得分:0)

尝试在用户控制代码中通过id查找控件。

或者有一个步骤来首先获取托管用户控件的页面控件,然后通过该页面的id查找控件。一旦你提到你的控制权,你就可以完成所有的操作。

答案 2 :(得分:0)

请在用户控件中使用以下行。

this.Master.FindControl(&#34; pnlView&#34;)。Visible = true;