我的网站上有这样的代码,它是我的导航栏,它位于我的 _layout.cshtml 页面顶部...
<div id="nav">
<ul>
<li id="current"><a href="/home/index">Home</a></li>
<li><a href="/code/index">Code Stuff</a></li>
<li><a href="/music/index">Music Stuff</a></li>
<li><a href="/blog/index">Blog</a></li>
<li><a href="/links/index">Links</a></li>
<li><a href="/contact/index">Contact</a></li>
</ul>
</div>
我正在使用 Razor View 页面,我需要能够将 id="current" 注入(inject)到我所在页面的 block 中。我的解决方案是做类似的事情
<div id="nav">
<ul>
<li id="@Model.PageName"><a href="/home/index">Home</a></li>
<li id="@Model.PageName"><a href="/code/index">Code Stuff</a></li>
<li id="@Model.PageName"><a href="/music/index">Music Stuff</a></li>
<li id="@Model.PageName"><a href="/blog/index">Blog</a></li>
<li id="@Model.PageName"><a href="/links/index">Links</a></li>
<li id="@Model.PageName"><a href="/contact/index">Contact</a></li>
</ul>
</div>
但是这当然行不通,因为所有 li 项都会包含页面名称。因此,如果不使用 burly if 语句,我如何动态地执行此操作?
最佳答案
首先,您确实应该使用类(如标题中所示)而不是 id(如问题文本中所示)。其次,我将定义一个函数,它接受一个参数来区分您的链接并输出空字符串或 current
取决于它是否与页面名称匹配。
@functions
{
public string MenuClass( string menuItem )
{
return string.Equals( Model.PageName, menuItem, StringComparison.OrdinalIgnoreCase )
? "current"
: "";
}
}
<div id="nav">
<ul>
<li class="@MenuClass("Home")"><a href="/home/index">Home</a></li>
<li class="@MenuClass("Code")"><a href="/code/index">Code Stuff</a></li>
...
</ul>
</div>
关于asp.net-mvc - 如何在 html block 中为 MVC 3 中的 View 创建一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8021222/