获取 Url 的最后一部分以在三元运算符中使用

Get the very last part of a Url to use in a ternary operator

我是 C# 的新手,我正在使用 ASP.NET 6.

在 .cshtml Razor 页面上,我尝试使用三元运算符根据 URL 路径名的最后一段填充 HTML 元素 class。例如:在名为 localhost:7659/Identity/Account/Login 的页面上 我正在尝试测试加载的 URL 页面名称是否在最后的 URL 段中包含单词 Login

这是我目前正在尝试的:

<a class="@Context.Request.Path == '/Login' ? 'active-page' : ''" href="/Identity/Account/Login">

但上面呈现为

<a class="/Identity/Account/Login == '/Login' ? 'active-page-header-menu-link' : ''" href="/Identity/Account/Login">

即代码没有被解析出来,@Context.Request.Path 也在 returning 整个 URL 路径名,在这种情况下,/Identity/Account/Login 我怎样才能 return 值 Login?

谢谢

可以查看路径是否包含'login',如:

Context.Request.Path.contains("Login")

或使用以下代码获取 URL 的最后一部分:

Context.Request.Path.Substring(Context.Request.Path.LastIndexOf('/') + 1)

您生成的html也不正确,您需要在锚class中使用@(...)

将您的代码更改为:

<a class="@(Context.Request.Path.Value.IndexOf("/Login")>-1? "active-page" : "")" href="/Identity/Account/Login">XXX</a>

如果请求 url 最后一个段是 Login:

那么它将生成 link
<a class="active-page" href="/Identity/Account/Login">XXX</a>

如果最后一段不是Login,它会生成link:

<a class href="/Identity/Account/Login">XXX</a>