显示Viewbag列表项的计数



如何显示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>");

        }

最新更新