相关疑难解决方法(0)

在ASP.NET MVC 3中添加自己的HtmlHelper

我是MVC的新手,我正在尝试创建自己的扩展方法,以便我可以添加到我的剃刀视图中可用的html助手.Html.DropDownListFor()允许您为模型上的任何属性创建下拉列表.我想创建一个叫做的帮助程序Html.StateDropDownListFor()完全相同的事情,除了加载美国所有50个州的下拉列表.这样我就不必为我创建的每个状态下拉列表创建一个SelectList.最简单的方法是什么?现在我有这个:

public static class ExtensionMethods
{
    public static MvcHtmlString StateDropDownList(this HtmlHelper html)
    {
        // ???
    }
}
Run Code Online (Sandbox Code Playgroud)

我甚至关闭了吗?我不想重建整个文本框助手,我只是想创建一个利用现有文本框助手的助手,但是为我做了SelectList.在我的观点中,我可以这样做Html.StateDropDownList(x => x.State)

非常感谢您的回答.

这是答案!

你们是一个很好的帮助,谢谢!这是完整的扩展方法,以防其他任何人使用它.

    public static MvcHtmlString StateDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
    {
        Dictionary<string, string> stateList = new Dictionary<string, string>()
        {
            {"AL"," Alabama"},
            {"AK"," Alaska"},
            {"AZ"," Arizona"},
            {"AR"," Arkansas"},
            {"CA"," California"},
            {"CO"," Colorado"},
            {"CT"," Connecticut"},
            {"DE"," Delaware"},
            {"FL"," Florida"},
            {"GA"," Georgia"},
            {"HI"," Hawaii"},
            {"ID"," Idaho"},
            {"IL"," Illinois"},
            {"IN"," Indiana"},
            {"IA"," Iowa"},
            {"KS"," Kansas"},
            {"KY"," …
Run Code Online (Sandbox Code Playgroud)

html c# asp.net asp.net-mvc asp.net-mvc-3

47
推荐指数
2
解决办法
5万
查看次数

如何将Bootstrap下拉样式应用于ASP.NET MVC DropDownList?

给出以下MVC剃刀代码,它从列表中创建一个下拉列表:

@Html.DropDownList("MyTestList", null, new { @class = "btn btn-default dropdown-toggle" })
Run Code Online (Sandbox Code Playgroud)

这将创建以下下拉列表:

落下

使用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>
Run Code Online (Sandbox Code Playgroud)

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

图片

问题:@Html.DropDownList使用MVC中的HTML代码时,是否可以获得相同的外观和感觉?

asp.net-mvc twitter-bootstrap

34
推荐指数
3
解决办法
8万
查看次数

扩展方法中的HtmlAttributes

我正在使用MVC 5,我正在尝试编写一些Bootstrap扩展方法.我的目标是用'覆盖' Html.ActionLink方法Html.BootstrapLinkButton.该BootstrapLinkButton方法应生成一个"btn btn-default"自动附加的css类的链接.我的代码到目前为止:

public static MvcHtmlString BootstrapLinkButton(this HtmlHelper htmlHelper, 
    string linkText,string actionName, string controllerName, 
    object routeValues = null, object htmlAttributes = null)
    {
        var attributes = 
            HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

        if (attributes.ContainsKey("class"))
        {
            object value;
            attributes.TryGetValue("class", out value);
            value = (value as string) + " btn btn-default";
            attributes["class"] = value;
        }
        else
        {
            attributes["class"] = "btn btn-default";
        }

        return htmlHelper.ActionLink(
            linkText, actionName, controllerName, routeValues, 
            new Dictionary<string, object>(attributes));
    }
Run Code Online (Sandbox Code Playgroud)

这给了我HTML中的以下结果:

<a comparer="System.Collections.Generic.GenericEqualityComparer`1[System.String]"
   count="3"
   keys="System.Collections.Generic.Dictionary`2
         +KeyCollection[System.String,System.Object]"    
   values="System.Collections.Generic.Dictionary`2 …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc extension-methods razor asp.net-mvc-5

5
推荐指数
1
解决办法
1918
查看次数