Asp.net mvc 如何在html块中为MVC3中的视图创建一个类?
我有这段代码,这是我的网站上的导航栏,它在我的_layout.cshtml页面的顶部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</
<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()中将其返回!谢谢:-)