Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在html块中为MVC3中的视图创建一个类?_Asp.net Mvc_Asp.net Mvc 3_Razor - Fatal编程技术网

Asp.net mvc 如何在html块中为MVC3中的视图创建一个类?

Asp.net mvc 如何在html块中为MVC3中的视图创建一个类?,asp.net-mvc,asp.net-mvc-3,razor,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</

我有这段代码,这是我的网站上的导航栏,它在我的_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视图页面,我需要能够将id=“current”注入到我所在页面的块中。我的解决办法是做类似的事情

<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项目都会有页面名。因此,如果不使用粗壮的if语句,我如何动态地执行此操作?

首先,您确实应该使用class(如标题所示)而不是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>
@函数
{
公共字符串菜单类(字符串菜单项)
{
返回字符串.Equals(Model.PageName、menuItem、StringComparison.OrdinalIgnoreCase)
?“当前”
: "";
}
}
  • ...

Hi,我应该将功能放在控制器中的什么位置?不要以为你能给我一个提示,告诉我你对加价的建议,好吗?@Pete2k函数进入视图,我添加了一个示例。嘿,谢谢……好的,我知道你在做什么,我把这个放在_布局页面上,但模型为空,这正常吗?我明白了,我明白了,我开始明白了,我创建了一个模型,然后将pagename放入其中,然后在控制器上的调用View()中将其返回!谢谢:-)