2015-04-28 190 views
-2

我有這樣的片段:自定義HTML幫助下拉列表

@Html.DropDownList("consultations", Model.ConsultationsTruncated, new { @class = "form-control", @id = "consultations" }) 

顯示的文本被截斷:

對於實例

字符串s = 「大家好」 == > Text =「Hel ...」和Value =「」你好 everyone「

我想通過類似的使用擴展方法來代替此實現:

public static class TruncateDropDownList 
{ 

    public static DropDownList TruncateDropDown(this HtmlHelper helper, ListItem[] values) 
    { 
     DropDownList drop = new DropDownList(); 
     drop.Items.AddRange(values); 

     List<SelectListItem> Textes = new List<SelectListItem>() ; 
     foreach (ListItem item in values) 
     { 
      SelectListItem selItem = new SelectListItem(); 
      if (item.Text.Length <= 20) selItem.Text = item.Text; 
      else selItem.Text = item.Text.Substring(0, 20) + "..."; 
      Textes.Add(selItem); 
     } 

     return drop; 

    } 
} 

這種方法實現丟失:

  1. DROPDOWNLIST name屬性
  2. 的CSS屬性將所選取的
  3. 文本和值如第一個

如何完成此方法來完成此任務?

+0

你的幫手需要返回'MvcHtmlString'和你不及格的屬性名稱該方法 - –

+0

@Downvoter你是什麼原因! –

回答

2

你不是已經添加的參數在HTML的擴展方法屬性:

public static MvcHtmlString TruncateDropDown(this HtmlHelper helper, string name, ListItem[] values, Object htmlAttributes) 
{ 

    List<SelectListItem> Textes = new List<SelectListItem>(); 
    foreach (ListItem item in values) 
    { 
     SelectListItem selItem = new SelectListItem(); 
     if (item.Text.Length <= 20) 
      selItem.Text = item.Text; 
     else 
      selItem.Text = item.Text.Substring(0, 20) + "..."; 
       Textes.Add(selItem); 
    } 

    return System.Web.Mvc.Html.SelectExtensions.DropDownList(helper, 
                  name, 
                  Textes, 
                  htmlAttributes); 

} 
+0

變量'表達式'缺失 –

+0

@LamloumiAfif更新我的代碼 –

+0

變量'屬性'也:) –

0

您可以通過利用現有的HtmlHelper for DropDownList來做到這一點。這將是這個樣子:

public static class TruncateDropDownList 
{ 
    public static MvcHtmlString TruncateDropDown(this HtmlHelper helper, string id, ListItem[] values, object htmlAttributes) 
    { 
     List<SelectListItem> Textes = new List<SelectListItem>() ; 
     foreach (ListItem item in values) 
     { 
      SelectListItem selItem = new SelectListItem(); 
      if (item.Text.Length <= 20) selItem.Text = item.Text; 
      else selItem.Text = item.Text.Substring(0, 20) + "..."; 
      Textes.Add(selItem); 
     } 

     return helper.DropDownList(id, values, htmlAttributes); 
    } 
} 
+1

你沒有使用'Textes'! –