Как применить условный класс в Razor - PullRequest
0 голосов
/ 11 апреля 2019

Я добавляю класс к <li> на основе текущего URL.

<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>

Когда я проверяю условие в часах, я получаю имя текущего класса "active" в visual studio.

enter image description here

Но когда я проверяю в браузере, класс не применяется к <li>.Я уверен, что он не переопределен никаким другим кодом.Хотя, если я применяю класс напрямую, он работает.

enter image description here

1 Ответ

2 голосов
/ 11 апреля 2019

Вам нужно изменить на @(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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...