如何显示viewbag列表和显示计数
:
阿拉伯联合酋长国(8)
安哥拉(4)
阿根廷(7)
奥地利(0)
比利时(11)
目前我有一个复选框列表(服装助手)在视图
@Html.CheckBoxList("checkedLocation", (ViewBag.country_list as MultiSelectList))
只显示国家。如果同样的列表有计数,那就太好了基本上,我有一张带有乡间田野的公司桌子。只是想展示在巴西,有十家公司可以选择,比如巴西(10)
viwbag
是如何被填充的
List<country> listInfo2 = db.countries.Where(row => row.covered == 1).ToList();
List<string> checkedValues = new List<string>();
MultiSelectList checkedValuesList = new MultiSelectList(listInfo2, "country_name", "country_name", checkedValues);
ViewBag.country_list = checkedValuesList
可以返回一个新的动态对象列表。下面是示例:
public class country
{
public string Name { get; set; }
public string Covered { get; set; }
}
List<country> contries = new List<country>() {
new country(){ Name = "Siraj", Covered = "1"},
new country(){ Name = "Kumail", Covered = "1"},
new country(){ Name = "Ali", Covered = "1"},
new country(){ Name = "Haider", Covered = "1"}
};
var query = (from x in contries
group x.Id by x.Name into g
select new { CustomName = string.Format("{0} ({1})", g.Key, g.Count()) }).ToList();
终于做对了控制器:
//COUNTRIES TO CHECKBOX LIST
List<DeviceGroupViewModel> listInfo2 = db.companies.GroupBy(fu => fu.COM_COUNTRY).Select(g => new DeviceGroupViewModel { Type = g.Key, Count = g.Count() }).ToList();
MultiSelectList checkedValuesList = new MultiSelectList(listInfo2, "Type", "Count");
ViewBag.country_list = checkedValuesList;
视图:
@Html.CheckBoxList2("checkedLocation", (ViewBag.country_list as MultiSelectList))
Checkboxlist助手:
public static MvcHtmlString CheckBoxList2(this HtmlHelper htmlHelper, string name, MultiSelectList listInfos)
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException("This parameter cannot be null or empty!", "name");
}
if (listInfos == null)
{
throw new ArgumentException("This parameter cannot be null!", "listInfos");
}
//if (listInfos.Count<SelectListItem>() < 1)
//{
// throw new ArgumentException("The count must be greater than 0!", "listInfos");
//}
List<string> selectedValues = (List<string>)listInfos.SelectedValues;
StringBuilder sb = new StringBuilder();
foreach (SelectListItem info in listInfos)
{
sb.Append("<li class='Navlist'>");
TagBuilder builder = new TagBuilder("input");
if (info.Selected) builder.MergeAttribute("checked", "checked");
//builder.MergeAttributes<string, object>(htmlAttributes);
builder.MergeAttribute("type", "checkbox");
builder.MergeAttribute("value", info.Value);
builder.MergeAttribute("name", name);
builder.MergeAttribute("id", info.Value);
builder.MergeAttribute("class", "filter-classif");
builder.InnerHtml = "<label>" + info.Value + "(" + info.Text + ")</label>";
sb.Append(builder.ToString(TagRenderMode.Normal));
sb.Append("</li>");
}