微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 如何将Bootstrap下拉式样应用于ASP.NET MVC DropDownList?

给出以下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>

它会显示如下的下拉列表:

题:
当使用@ Html.DropDownList作为使用MVC的HTML代码时,是否可以得到相同的外观?

解决方法

不可能使用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>

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
Some samples are below for ASP.Net web form controls:(from http://www.visualize.uk.com/resources/asp
问题描述: 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。 For columns not defined as System.String, the only vali
最近用到了CalendarExtender,结果不知道为什么发生了错位,如图在Google和百度上找了很久,中文的文章里面似乎只提到了如何本地化(就是显示中文的月份)以及怎么解决被下拉框挡住的问题,谈
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence changed a lot since 1.1. Here is the order: App
静态声明: &#39; Style=&quot;position: relative&quot; AppendDataBoundItems=&quot;True&quot;&gt; (无 或 空 或
以下内容是从网络上搜集资料,然后整理而来的。不当之处,请不吝指教。(The following were from network, and edited by myself. Thanks in a
Imports System Imports System.Reflection Namespace DotNetNuke &#39;*********************************
Ok so you have all seen them: “8 million tools for web development”, “5 gagillion tools that if you