我有这个片段:
@Html.DropDownList("consultations", Model.ConsultationsTruncated, new { @class = "form-control", @id = "consultations" })
显示的文字被截断:
例如
string s ="大家好" ==>文字=" Hel ..."和价值=""你好 大家"
我希望用类似的扩展方法替换此实现:
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;
}
}
缺少此方法实现:
如何完成此方法以完成此任务?
答案 0 :(得分:3)
您的扩展方法中没有为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);
}
答案 1 :(得分:1)
您可以通过利用DropDownList的现有HtmlHelper来实现此目的。它看起来像这样:
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);
}
}