2012-09-27 63 views
0

使用MVC,我通常會做很多自定義顯示/編輯器模板,這些模板對於自定義創建的模型類非常適用。MVC - 覆蓋@ Html.DropDownListFor()

但是,由於樣式下拉(選擇元素)的限制,我創建了一些樣式,它向標準輸出了一組不同的元素。

有誰知道如何正確地重寫@ Html.DropDownListFor()的輸出,以便我的解決方案中的每個下拉列表都會更改?有沒有任何資源在線?

的方法本身可以System.Web.Mvc.dll程序中找到,但在這樣做等

謝謝,保羅希望一些資源指針/陷阱。

回答

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)); 
}