asp.net-mvc - 如何在 html block 中为 MVC 3 中的 View 创建一个类?

标签 asp.net-mvc asp.net-mvc-3 razor

我的网站上有这样的代码,它是我的导航栏,它位于我的 _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/

相关文章:

asp.net-mvc - ELMAH - 使用自定义错误页面收集用户反馈

javascript - 如何合并两个 JavaScript 对象字面量

部分 View 刷新后,Javascript 表行单击不起作用

c# - 带有 Ninject 错误 : MVCApplication does not implement inherited abstract member 的 MVC3

javascript - addRemoveLinks 在我的 Dropzone 上不起作用

c# - CSS 颜色被链接覆盖

asp.net-mvc - System.IdentityModel 和 Microsoft.IdentityModel 之间有什么区别,我应该使用哪一个?

jquery - Javascript block 在 mvc3 razor 模板中呈现为 html 实体字符串

Razor CSHTML IF 语句

ajax - MVC 3 AJAX 帖子中重复的 Controller 名称