html - 如何在 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>
. 我确信它不会被任何其他代码覆盖。虽然如果我直接申请课程,它会起作用。
解决方案
您需要更改@(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>
推荐阅读
- regex - PfSense 2.5.2 中的 HAProxy18-1.8.30:无法管理 URL 的路径重写
- css - 将 SASS 添加到 .NET 6 Blazor 应用程序的正确方法?
- api - 无法使用 tweepy.api.search_full_archive (Python)
- ipfs - 在 IPFS 上创建目录并单独显示文件
- android - Android Jetpack 撰写和登录屏幕
- node.js - 需要验证 REST API 正文请求
- c# - 将 Odata 枚举转换为驼峰式大小写
- docker - docker msys2:符号链接的级别太多
- sql - 统计 SQL 语句中返回的行数
- html - Srcset 似乎找不到正确的图像