2012-01-29 96 views
0

我有.net mvc3网站。我必须实现顶级菜单。每个菜单标签是导致他的动作并显示另一个view.This我现在有: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");(因为它必须出现在所有页面) 我需要实现自定义ActionLink。锚文本必须是:

<span>text</span><b>text</b> 

“文本”是家庭(例如第一里的) 而目前的ActionLink必须添加类:“选定”的主播。

我该怎么做?请帮助

p.s 我可以添加此菜单为我的网站中的每个视图与“选定”类当前视图,但这不是很好的解决方案。

回答

1

如果我理解正确的,你想要把 “选择” 类当前显示的动作。

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString() 
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString() 

然后你把这个“选择”类的ActionLink的在前面回答的方式显示

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li> 

个人而言,我将创建: 您可以通过查看该做视图中的检查一个包含“MenuAction”列表的ViewModel,该列表公开除路由值以外的bool属性“Selected”。从视角来看,Imo将更加清晰地处理数据。

+0

这是很好的解决方案。但我的菜单是局部视图,并从布局调用。所以HttpContext.Current.Request.RequestContext.RouteData.Values [“action”]。ToString()将始终返回此部分的名称,并且此名称将永远不会与当前操作名称匹配。 – 2012-01-29 10:07:17

+0

调用类似于@ Html.Action( “MainMenu”,“菜单”)。比你做的逻辑和准备在控制器的视图 – Iridio 2012-01-29 10:08:45

+0

我的错误我用var currentAction = htmlHelper.ViewContext.RouteData。GetRequiredString(“action”)而不是HttpContext.Current.Request.RequestContext.RouteData.Values [“action”]。ToString()。现在是工作。谢谢 – 2012-01-29 10:17:35

0

你可以用这个ActionLink超载添加class

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li> 

的第5个参数是HTML属性。

MSDN ActionLink的这种超负荷的


更新:

$(function(){ 
    var controllerName ='ViewContext.RouteData.Values["Controller"]'; 
    $('#' +controllerName).addClass(':selected'); 
}); 
+0

您将静态“选定”类添加到Home链接。我需要动态添加“选定”到当前ActionLink – 2012-01-29 09:53:25

+0

@ user1086344。你想什么时候添加它? – gdoron 2012-01-29 09:55:41

+0

例如,当您点击“产品”时,页面将加载“产品”视图,并且必须将“选定”类添加到“产品”锚点并从前一个锚点移除。 – 2012-01-29 09:59:54