首页 > 解决方案 > 如何在 Razor 中应用条件类

问题描述

我正在<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>

当我检查手表中的情况时,我在视觉工作室中获得了当前类名“活动”。

在此处输入图像描述

但是当我在浏览器中签入时,课程不适用于<li>. 我确信它不会被任何其他代码覆盖。虽然如果我直接申请课程,它会起作用。

在此处输入图像描述

标签: htmlasp.net-mvcrazor

解决方案


您需要更改@(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>

推荐阅读