我对c#非常陌生,我正在使用ASP。6 .
净在。cshtml Razor页面上,我试图使用三元运算符来填写基于URL路径名的最后一段的HTML元素类。在一个名为的页面上localhost:7659/Identity/Account/Login我正在尝试测试加载的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
也返回整个URL路径名,在这种情况下,/Identity/Account/Login我怎么才能返回值Login
?
感谢您生成的html也不正确,您需要在锚类中使用@(...)
。
把你的代码改成:
<a class="@(Context.Request.Path.Value.IndexOf("/Login")>-1? "active-page" : "")" href="/Identity/Account/Login">XXX</a>
如果请求url的最后一段是Login
,则生成链接:
<a class="active-page" href="/Identity/Account/Login">XXX</a>
如果最后一段不是Login
,则生成链接:
<a class href="/Identity/Account/Login">XXX</a>
您可以检查路径是否包含'login',如:
Context.Request.Path.contains("Login")
或者使用下面的代码来获取URL的最后一部分:
Context.Request.Path.Substring(Context.Request.Path.LastIndexOf('/') + 1)