2015-04-28 139 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'! –