如何在Razor中应用条件类

时间:2019-04-11 07:23:18

标签: html asp.net-mvc razor

我正在根据当前网址向Post 1 - Post 11 - Post 12 - Post 121 - Post 122 - Post 13 Post 2 - Post 21 - Post 211 添加类。

<li>

当我检查手表中的状况时,我在Visual Studio中得到了当前的类名“ active”。

enter image description here

但是,当我在浏览器中签到时,类不适用于<ul class="nav navbar-nav"> <li class="@{string.Format(Request.Url.PathAndQuery.ToLower() == "" ? "active" : string.Empty);}"><a href="/">Home </a></li> <li class="@{string.Format(Request.Url.PathAndQuery.ToLower().Contains("aboutus") ? "active" : string.Empty);}"><a href="/AboutUs">About Us </a></li> <li class="@{string.Format(Request.Url.PathAndQuery.ToLower().Contains("research") ? "active" : string.Empty);}"><a href="/Research">Research</a></li> <li class="@{string.Format(Request.Url.PathAndQuery.ToLower().Contains("contactus") ? "active" : string.Empty);}"><a href="/ContactUs">Contact Us</a></li> </ul> 。我确定它不会被任何其他代码覆盖。尽管如果我直接申请课程,那还是可以的。

enter image description here

1 个答案:

答案 0 :(得分:2)

您需要更改为@(string.Format(Request.Url.PathAndQuery.ToLower() == "" ? "active" : string.Empty))而不是@{}

<li class="@(string.Format(Request.Url.PathAndQuery.ToLower() == "" ? "active" : string.Empty))"><a href="/">Home </a></li>

您的代码应带有currentUrl的变量

@{
    var currentUrl = Request.Url.PathAndQuery.ToLower();
}

<ul class="nav navbar-nav">
    <li class="@(string.Format(currentUrl == "" ? "active" : string.Empty))"><a href="/">Home </a></li>
    <li class="@(string.Format(currentUrl.Contains("aboutus") ? "active" : string.Empty))"><a href="/AboutUs">About Us </a></li>
    <li class="@(string.Format(currentUrl.Contains("research") ? "active" : string.Empty))"><a href="/Research">Research</a></li>
    <li class="@(currentUrl.Contains("contactus") ? "active" : string.Empty))"><a href="/ContactUs">Contact Us</a></li>
</ul>