我有.net mvc3网站。我必须实现顶级菜单。每个菜单标签都会导致他的动作并显示另一个视图。这就是我现在所拥有的:
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("Products", "Products", "Home")</li>
<li>@Html.ActionLink("Pricing", "Pricing", "Home")</li>
<li>@Html.ActionLink("Our Team", "OurTeam", "Home")</li>
<li>@Html.ActionLink("Contact Us", "ContactUs", "Home")</li>
</ul><!-- /menu -->
此视图在我的布局中为Html.RenderAction("Header", "Home");
(因为它必须显示在所有页面中)
我需要实现Custom ActionLink。锚文本必须是:
<span>text</span><b>text</b>
“文字”是主页(例如第一个li) 当前的ActionLink必须将类:“Selected”添加到锚点。
我怎么能这样做?请帮忙
P.S 我可以使用当前视图的“选定”类为我网站中的每个视图添加此菜单,但这不是一个好的解决方案。
答案 0 :(得分:1)
如果我理解正确,您希望将“选定”类放到当前显示操作中。 您可以通过以下方式检查视图:
HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString()
然后你按照上一个答案中显示的方式将“选定”类放到你的动作链接中
<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>
就个人而言,我将创建一个ViewModel,其中包含一个“MenuAction”列表,除路由值外,还显示bool属性“Selected”。视图中的Imo将更清晰地处理数据。
答案 1 :(得分:0)
您可以使用此class
重载添加ActionLink
:
<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>
第五个参数是HTML属性。
MSDN此次重载的ActionLink
更新
$(function(){
var controllerName ='ViewContext.RouteData.Values["Controller"]';
$('#' +controllerName).addClass(':selected');
});