0

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

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>

看起来像:

    xxxxxxxxxxxxx
    x main.master xxxxxx
    x 导航 A x 导航 B x 导航 C x
    xxx
    xxxpppppppp
    xxxp Crnt 页面 xpp
    xxxpppppppp

我希望根据当前页面设置的任何页面变量动态地将“.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>";
    }
4

1 回答 1

1

<?php ?>等效的是<%= %>

如果您正在执行大量逻辑,则最佳做法是在后面的代码 (.aspx.cs) 中执行该逻辑并在那里呈现控件。

BulletedList 是一个更好的选择:

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

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

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

string pageName = Path.GetFileNameWithoutExtension(Page.AppRelativeVirtualPath);
于 2013-06-26T18:05:06.943 回答