根据当前页面更改div元素

时间:2013-06-26 17:45:22

标签: c# html asp.net

我是第一次尝试使用C#的人。我有一个母版页,其中包含以下导航代码,我想根据网页动态更改:

main.master:

...
<ul class="nav-menu">
   <li class="active"><a href="#">link A</li>
   <li><a href="#">link B</li> 
   <li><a href="#">link C</li>
</ul>
...

截至目前,class =“active”是硬编码的,但我想提出一些条件,例如:

<li //Condition: if (page=="link") print "class=\"active\""; //><a href="#">whatever link it's supposed to be</li>

我可以用PHP做到这一点,但我不知道如何用C#的ASP.net方式做到这一点。

我有以下结构:


    - main.master --
    -- pageA.aspx
    -- pageB.aspx
    -- pagec.aspx

这样当前页面通过以下方式加载:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>

看起来像:


    x x x x x x x x x x x x x
    x main.master x x x x x x
    x Nav A x Nav B x Nav C x
    x x x 
    x x x   p p p p p p p p p 
    x x x   p Crnt page x p p
    x x x   p p p p p p p p p

我希望动态地将“.active”类应用于main.master,具体取决于当前页面设置的页面变量。

tldr:我想,我正在寻找的是一种简单的方法:<?php //some code here ?>

编辑:

protected void Page_Load(object sender, EventArgs e)
    {
//check for conditions of home
...
        this.isActiveHome.Text = @"<li class=""active""><a href=""Default.aspx"">Home</a></li>";
    }

1 个答案:

答案 0 :(得分:1)

<?php ?>等效为<%= %>

如果你正在做很多逻辑,那么最好在后面的代码(.aspx.cs)中执行该逻辑并在那里渲染控件。

更好的选择是BulletedList:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.bulletedlist.aspx

通过在BulletedList方法中添加Items来构建Page_Load控件。

您可以使用以下方式获取页面名称:

string pageName = Path.GetFileNameWithoutExtension(Page.AppRelativeVirtualPath);