0

使用 MVC,我通常会做很多自定义显示/编辑器模板,这些模板非常适合自定义创建的模型类。

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

有谁知道如何正确覆盖 @Html.DropDownListFor() 的输出,以便我的解决方案中的每个下拉菜单都会改变?网上有这方面的资源吗?

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

谢谢,保罗。

4

1 回答 1

0

我已经开始这样做,并设法获得了一个非常粗糙/早期的版本,至少可以正常工作。它还不能处理所有的进进出出,但我会边做边做。

到目前为止,我所做的只是将下拉菜单包围在一个 div 中,这有助于增加样式。它还不适合命名它,或者添加 html 属性等

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

/// <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));
}
于 2012-09-27T15:58:30.467 回答