在包含文件中显示/隐藏HTML表格行

时间:2015-04-10 14:20:15

标签: asp.net vb.net

我有一个页面(Default.aspx),它使用包含文件来显示左侧导航栏内容。

<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder_leftnav" Runat="Server">
    <!--#include file="../../includes/menus/left_nav/menu.htm" -->
</asp:Content>

在menu.htm中,我有一个HTML表格。我只想为某些用户显示一个菜单项(表格行),因此我将其设置为display:none;

在Default.aspx的代码隐藏中,如果用户在允许的用户列表中,我想更改该表行的display属性,但我无法弄清楚如何访问它。有任何想法吗?有没有更好的方法呢?

提前致谢。

1 个答案:

答案 0 :(得分:0)

重构这种方法的一种快速方法可能是将菜单转换为包含易于操作的Table控件的用户控件:

<%@ Register TagPrefix="uc" TagName="Menu" Src="~/Menu.ascx" %>
<asp:Content runat="server" ID="Content4" ContentPlaceHolderID="ContentPlaceHolder_leftnav">
    <uc:Menu runat="server" id="ucMenu" />
</asp:Content>

Menu.ascx取代了menu.htm,看起来像这样:

<asp:Table ID="tblMenu" runat="server">
    <asp:TableRow ID="trSecured" runat="server">
        <asp:TableCell ID="tdSecured">Secured (Make Hyperlink)</asp:TableCell>
    </asp:TableRow>
    <asp:TableRow ID="trNonSecured1">
        <asp:TableCell ID="tdNonSecured">Non-Secured (Make Hyperlink)</asp:TableCell>    
    </asp:TableRow>
</asp:Table>

然后在Menu.ascx用户控件中,您可以处理菜单显示逻辑:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'CanViewSecuredPage should be in it's own class so you can share it between menu display
        'logic and for securing the actual page itself (in case they navigate directly by URL).
        If Not CanViewSecuredPage() Then

            Dim tblTable As Table = CType(Me.FindControl("tblMenu"), Table)

            'Or do .FindControl to not be bound to ordinal.
            tblTable.Rows(0).Visible = False

        End If

    End Sub