C#学习教程:使用c#MVC3Html.ActionLink渲染Bootstrap下拉菜单我通过简单的菜单扩展成功了,我传递了字符串和布尔值等参数。但是现在我正在尝试创建我自己的扩展,它可以生成一个BootstrapDropdown并将一个选定的css类添加到下拉列表的父级-“ONEofTHEdropdownITEMSselected”-当下拉列表中的一个项目被选中时(当一个下拉项目被选中时,它将被路由到那里的不同控制器)可以有几个或多个控制器):Dropdown和DropdownAction1Action2下面是我的UI/MenuExtensions.cs我想要实现的目标-传递两个将生成引导下拉列表的参数,我可以手动插入新菜单该下拉列表中的项目。publicstaticclassMenuExtensions{publicstaticMvcHtmlStringMenuItem(thisHtmlHelperhtmlHelper,stringtext,stringaction,stringcontroller,stringcssClass="item",boolisController=false){varli=newTagBuilder("li");varrouteData=htmlHelper.ViewContext.RouteData;varcurrentAction=routeData.GetRequiredString("action");varcurrentController=routeData.GetRequiredString("controller");if((string.Equals(currentAction,action,StringComparison.OrdinalIgnoreCase)||isController)&&string.Equals(currentController,controller,StringComparison.OrdinalIgnoreCase))li.AddCssClass("am-selected");li.InnerHtml=htmlHelper.ActionLink(text,action,controller,new{Area=""},new{@class=cssClass}).ToHtmlString();返回MvcHtmlString.Create(li.ToString());}publicstaticMvcHtmlStringSelectMenu(thisHtmlHelperhtmlHelper,stringcssClass,SelectMenuItem[]menuItems){TagBuilderlist=newTagBuilder("li"){InnerHtml=""};stringcurrentAction=htmlHelper.ViewContext.RouteData.GetRequiredString("action");stringcurrentController=htmlHelper.ViewContext.RouteData.GetRequiredString("controller");foreach(SelectMenuItemmenuIteminmenuItems){TagBuilderli=newTagBuilder("li"){InnerHtml=htmlHelper.ActionLink(menuItem.Text,menuItem.Action,menuItem.Controller,null,new{}).ToHtmlString()};ul.InnerHtml+=li.ToString();}返回MvcHtmlString.Create(list.ToString());}}这是外部课程publicclassSelectMenuItem{publicstringText{get;放;}publicstringAction{get;放;}公共字符串控制器{得到;放;}publicboolIsVisible{得到;放;}publicSelectMenuItem(){IsVisible=true;}}之后我的html看起来像这样@Html.SelectMenu("dropdown",new[]{newSelectMenuItem{Text="ViewOne",Controller="Controller1",Action="index",IsVisible=SystemUser.Current().IsAdmin},newSelectMenuItem{Text="ViewTwo",Controller="Controller2",Action="index"}});问题在于SelectMenu仅呈现:无需重新发明轮子。使用TwitterBootstrapMVC,可以通过以下语法实现所需的输出:@using(vardd=Html.Bootstrap().Begin(newDropDown("Dropdown").SetLinksActiveByControllerAndAction())){@dd.ActionLink("Action1","index","controller1")@dd.ActionLink("Action2","index","controller2")}注意扩展方法SetLinksActiveByControllerAndAction()。这就是根据当前控制器/动作使链接处于活动状态的原因。免责声明:我是TwitterBootstrapMVC的作者。如果使用Bootstrap3,则需要购买许可证。对于Bootstrap2,它是免费的。以上就是C#学习教程:使用c#MVC3Html.ActionLink渲染bootloader下拉菜单的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
