Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET C#带列表导航如何设置id=";“当前”;在活动导航页面上?_C#_Asp.net - Fatal编程技术网

ASP.NET C#带列表导航如何设置id=";“当前”;在活动导航页面上?

ASP.NET C#带列表导航如何设置id=";“当前”;在活动导航页面上?,c#,asp.net,C#,Asp.net,我还在学习asp.net,想知道是否有一种简单的方法可以将id=“current”设置为导航栏,以便根据用户所在的页面突出显示该页面。我的模板被设置为使用id=“current”来更改链接的样式,我有I类来设置每个选项卡的样式 这是我的站点中的代码 <nav id="navigation" class="style-1"> <div class="left-corner"></div> <div class="right-corner"><

我还在学习asp.net,想知道是否有一种简单的方法可以将id=“current”设置为导航栏,以便根据用户所在的页面突出显示该页面。我的模板被设置为使用id=“current”来更改链接的样式,我有I类来设置每个选项卡的样式

这是我的站点中的代码

<nav id="navigation" class="style-1">

<div class="left-corner"></div>
<div class="right-corner"></div>

<ul class="menu" id="responsive">

    <li><a href="home.aspx" id="current"><i class="home"></i> Home</a></li>

    <li><a href="Calendar.aspx"><i class="calendar"></i>Calendar</a></li>

    <li><a href="Bill.aspx"><i class="list"></i>Bills</a></li>

</ul>
</nav>

正如我所说,我还在学习,所以我不确定是否最好将它放在ContentPlaceHolder中。我试图请求URL并执行if语句,但不确定如何设置id=

任何帮助都会很好


谢谢

在控件中以编程方式设置ID不是一个很好的实践。。。这取决于您想要如何确定“当前”或活动状态

如果您使用的是ASP.NET表单,则可以研究使用“ASP.NET控件”菜单,该菜单为“活动”项分配一个类,并且可以与ASP.NET站点地图配对/数据绑定

如果不希望使用ASP.NET表单,可以在href标记中放置函数求值,并在ASP.NET母版页的代码中声明函数。差不多

<a href="home.aspx" class="<% CurrentOrNot("home") %>"> ...

在开始自己的操作之前,请先查看ASP.NET菜单。

这可能不是最好的答案,但我最近尝试了与您尝试的类似的操作。首先,我设置一个变量来表示每个菜单链接的css类,然后获取当前文件路径并检查它是否包含位置,然后根据页面是否为活动页面设置css类

 @{
            //some how find out what page we are on so we can set the active attribute
            var HomeClass = "non-active";
            var AboutClass = "non-active";

            string path = HttpContext.Current.Request.FilePath;
            if (path.Contains("Home"))
            {
                HomeClass = "active";
            }
            if (path.Contains("About"))
            {
                AboutClass = "active";
            }



    }
然后对于菜单,我为类属性做了这些

<a href="/home" class="@HomeClass"></a>
< a href="/about" class=@AbouitClass"> </a>



您应该考虑设置菜单项的
类,而不是
id
,以便将其显示为高亮显示

你可以这样做。
向每个链接添加
id
runat=“server”

<li><a href="home.aspx" id="HomeLink" runat="server"><i class="home"></i> Home</a></li>
<li><a href="Calendar.aspx" id="CalendarLink" runat="server"><i class="calendar"></i>Calendar</a></li>
<li><a href="Bill.aspx" id="BillLink" runat="server"><i class="list"></i>Bills</a></li>

这会将与当前页面相匹配的链接类设置为
current
。当然,您需要在样式表中定义该类。但这应该会起作用。

这是我最初的想法。让我来玩一下,让您知道它是如何运行的。感谢您的建议。这是我最后使用的,效果很好。谢谢这救了我,谢谢!
<li><a href="home.aspx" id="HomeLink" runat="server"><i class="home"></i> Home</a></li>
<li><a href="Calendar.aspx" id="CalendarLink" runat="server"><i class="calendar"></i>Calendar</a></li>
<li><a href="Bill.aspx" id="BillLink" runat="server"><i class="list"></i>Bills</a></li>
protected void Page_Load(object sender, EventArgs e)
{
    SetCurrentPage();
}

private void SetCurrentPage()
{
    var pageName = GetPageName();

    switch (pageName)
    {
        case "home.aspx":
            HomeLink.Attributes["class"] = "current";
            break;
        case "Calendar.aspx":
            CalendarLink.Attributes["class"] = "current";
            break;
        case "Bill.aspx":
            BillLink.Attributes["class"] = "current";
            break;
    }
}

private string GetPageName()
{
    return Request.Url.ToString().Split('/').Last();
}