asp.net-mvc – 如何将Bootstrap下拉式样应用于ASP.NET MVC DropDownList?
发布时间:2020-05-23 17:44:58 所属栏目:asp.Net 来源:互联网
导读:给出以下MVC剃刀代码,它从列表中创建一个下拉列表: @Html.DropDownList(MyTestList, null, new { @class = btn btn-default dropdown-toggle }) 这将创建以下下拉列表: 当使用getbootstrap.com的代码时: div class=dropdown button class=btn
|
给出以下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-core – 如何在Asp.net Core中使用soap web服务?
- asp.net-mvc – ASP.NET MVC在HTTP DELETE请求上有405错误?
- asp.net-core-mvc – Html.AntiForgeryToken()仍然需要?
- asp.net-mvc – ASP.NET MVC将表单值传递给action方法
- asp.net-mvc – CORS在使用OWIN认证的web api中不起作用
- 在Asp.net Gridview中显示多列中的行
- asp.net – 在asp:Button中包装文本
- asp.net-mvc – Html.Partial或Html.RenderPartial与MVC3?
- asp.net-mvc-3 – MVC3视图继承不可能?
- asp.net-mvc – ASP.NET MVC中的Flat和Nested ViewModel类
推荐文章
站长推荐
- azure – 获取#error = unsupported_response_ty
- asp.net-mvc-3 – 淘汰赛和全球化
- asp.net-web-api – 如何从Web API获取IObservab
- asp.net-mvc – T4MVC @ Url.Action(MVC.Control
- ASP.NET MVC – MapRoute与routes.Add(和404s)
- ASP.NET web.config:system.web.compilation中的
- asp.net读取磁盘文件、删除实例代码
- asp.net-mvc – Resharper 5:如何设置内联代码块
- asp.net – 为什么在调试我的Web应用程序时得到“
- ASP.NET(AJAX+JSON)实现对象调用
热点阅读
