首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC -覆盖@Html.DropDownListFor()

MVC -覆盖@Html.DropDownListFor()
EN

Stack Overflow用户
提问于 2012-09-27 22:42:09
回答 1查看 1.5K关注 0票数 0

使用MVC,我通常会做很多自定义的显示/编辑器模板,这些模板对于自定义创建的模型类来说工作得很好。

但是,由于限制了如何设置下拉列表(选择元素)的样式,我创建了一些样式,将一组不同的元素输出到标准。

有谁知道如何正确覆盖@Html.DropDownListFor()的输出,从而使我的解决方案中的每个下拉列表都会发生变化?网上有没有这方面的资源?

方法本身可以在System.Web.Mvc.dll中找到,但需要一些资源来处理指针/陷阱等。

谢谢,保罗。

EN

回答 1

Stack Overflow用户

发布于 2012-09-27 23:58:30

我已经开始了这方面的工作,并设法获得了一个非常粗糙/早期的版本,至少可以正常工作。它还不能处理所有的输入和输出,但我会在进行的过程中处理它。

到目前为止,我所做的只是将drop放在一个div中,以帮助进行额外的样式设置。它还不适合命名它,或者添加html属性等等。

对于任何想要这样做的人,到目前为止,我提供了以下内容,您可以根据自己的需要进行修改:

代码语言:javascript
复制
/// <summary>
/// Extension method for displaying a custom dropdownlist
/// </summary>
public static MvcHtmlString CustomDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, IEnumerable<SelectListItem> selectList, IDictionary<String, Object> htmlAttributes)
{
    StringBuilder ItemsStringBuilder = new StringBuilder();

    foreach (SelectListItem SingleListItem in selectList)
    {
            ItemsStringBuilder.AppendLine(DropDownExtensions.ListItemToOption(SingleListItem));
    }

    TagBuilder SelectTagBuilder = new TagBuilder("select")
    {
        InnerHtml = ItemsStringBuilder.ToString()
    };

    TagBuilder OuterTag = new TagBuilder("div")
    {
        InnerHtml = SelectTagBuilder.ToString()
    };

    OuterTag.Attributes.Add("class", "styled-select");

    return MvcHtmlString.Create(OuterTag.ToString(TagRenderMode.Normal));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12624004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档