asp.net-mvc – 如何将Bootstrap下拉式样应用于ASP.NET MVC Drop
发布时间:2020-12-16 00:30:41 所属栏目:asp.Net 来源:网络整理
导读:给出以下MVC剃刀代码,它从列表中创建一个下拉列表: @Html.DropDownList("MyTestList",null,new { @class = "btn btn-default dropdown-toggle" }) 这将创建以下下拉列表: 当使用getbootstrap.com的代码时: div class="dropdown" button class="btn btn-d
给出以下MVC剃刀代码,它从列表中创建一个下拉列表:
@Html.DropDownList("MyTestList",null,new { @class = "btn btn-default dropdown-toggle" }) 这将创建以下下拉列表: 当使用getbootstrap.com的代码时: <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> Dropdown <span class="caret"></span> </button> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1"> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">test1</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">test2</a></li> </ul> </div> 它会显示如下的下拉列表: 题: 解决方法
不可能使用Razor的@ Html.DropDownList()方法创建您提到的Bootstrap下拉列表。虽然很容易创建自己的HTML帮助程序,使代码需要创建上述的下拉列表。
有很多教程和指南(such as this one)将引导您完成创建自定义HTML助手的过程。它们真的不是很难创建,真正有助于加快开发时间并鼓励代码重用。 更新: 考虑到这个问题的数量,这个问题是得到一个upvote的数量(错误的)答案在下面是获得,这是一个很久以前(一年半!)代码示例与一个图像来展示差异。 您可以将此代码复制并粘贴到您的解决方案中,并且它应该工作。 代码: public class BootstrapHtml { public static MvcHtmlString Dropdown(string id,List<SelectListItem> selectListItems,string label) { var button = new TagBuilder("button") { Attributes = { {"id",id},{"type","button"},{"data-toggle","dropdown"} } }; button.AddCssClass("btn"); button.AddCssClass("btn-default"); button.AddCssClass("dropdown-toggle"); button.SetInnerText(label); button.InnerHtml += " " + BuildCaret(); var wrapper = new TagBuilder("div"); wrapper.AddCssClass("dropdown"); wrapper.InnerHtml += button; wrapper.InnerHtml += BuildDropdown(id,selectListItems); return new MvcHtmlString(wrapper.ToString()); } private static string BuildCaret() { var caret = new TagBuilder("span"); caret.AddCssClass("caret"); return caret.ToString(); } private static string BuildDropdown(string id,IEnumerable<SelectListItem> items) { var list = new TagBuilder("ul") { Attributes = { {"class","dropdown-menu"},{"role","menu"},{"aria-labelledby",id} } }; var listItem = new TagBuilder("li"); listItem.Attributes.Add("role","presentation"); items.ForEach(x => list.InnerHtml += "<li role="presentation">" + BuildListRow(x) + "</li>"); return list.ToString(); } private static string BuildListRow(SelectListItem item) { var anchor = new TagBuilder("a") { Attributes = { {"role","menuitem"},{"tabindex","-1"},{"href",item.Value} } }; anchor.SetInnerText(item.Text); return anchor.ToString(); } } 用法: @using (Html.BeginForm("","",FormMethod.Post)) { var items = new List<SelectListItem>() { new SelectListItem() { Text = "Item 1",Value = "#" },new SelectListItem() { Text = "Item 2",}; <div class="form-group"> @Html.Label("Before",new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @Html.DropDownList("Name",items,"Dropdown",new { @class = "form-control"}) </div> </div> <br/> <br/> <br/> <div class="form-group"> @Html.Label("After",new { @class = "col-md-2 control-label" }) <div class="col-md-10"> @BootstrapHtml.Dropdown("dropdownMenu1","Dropdown") </div> </div> } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net mvc调试器抛出SEHException
- asp.net-mvc – Olark免费替代品
- 在ASP.NET中设置活动选项卡Ajax TabContainer会导致整个容器
- asp-classic – 通过object标签和Server.CreateObject声明连
- asp.net-mvc – 在控制器的OnException中确定结果类型
- ASP.NET Core身份验证
- .Net 内存对象分析
- asp.net – 如何在json结果上使用jquery选择器
- asp.net – .NET 4.0实现OutputCacheProvider
- 如何在ASP.NET中的Web应用程序之间共享用户控件?
推荐文章
站长推荐
- 在asp.net webforms中使用jquery调用webmethod
- asp.net-mvc – Visual Studio总是能够在源代码视
- ASP.NET WebApi OAuth2身份认证,搭建客户端(二
- Asp.Net成员 – 实体框架4中的提供商
- asp.net – 如何通过sqldatasource计算获取的行数
- asp.net – 编程控制输出缓存 – 根据参数值禁用
- asp.net – 无法自动进入服务器.无法确定停止位置
- asp.net-mvc – 存在多个获取操作时的MVC API路由
- 在ASP.NET中动态设置元素属性的值
- asp.net – 我需要将.compiled文件复制到生产服务
热点阅读