使用MVC,我通常会做很多自定义的显示/编辑器模板,这些模板对于自定义创建的模型类来说工作得很好。
但是,由于限制了如何设置下拉列表(选择元素)的样式,我创建了一些样式,将一组不同的元素输出到标准。
有谁知道如何正确覆盖@Html.DropDownListFor()的输出,从而使我的解决方案中的每个下拉列表都会发生变化?网上有没有这方面的资源?
方法本身可以在System.Web.Mvc.dll中找到,但需要一些资源来处理指针/陷阱等。
谢谢,保罗。
发布于 2012-09-27 23:58:30
我已经开始了这方面的工作,并设法获得了一个非常粗糙/早期的版本,至少可以正常工作。它还不能处理所有的输入和输出,但我会在进行的过程中处理它。
到目前为止,我所做的只是将drop放在一个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));
}https://stackoverflow.com/questions/12624004
复制相似问题