只有在剃须刀中不存在的项目才将其添加到选择列表中
add into selectlist an item only if it doesn't exist into razor
我想通过 'language' 属性 遍历子节点来动态创建 select 列表。因此,仅当之前未添加此 属性 值时才想将其添加为 select 列表项。
我有以下代码。
@{
var litem = new List<SelectListItem>();
litem.Insert(0, new SelectListItem { Selected = true, Text = "All", Value = "" });
foreach (var i in Model.Content.Children.Where("Visible"))
{
//if (i.GetProperty("language").Value != "")
if (i.GetProperty("language").Value != "")
{
string langstr = i.GetProperty("language").Value.ToString();
SelectListItem item = new SelectListItem { Selected = false, Text = langstr, Value = langstr };
if ((!(litem.Contains(item))))
{
litem.Add(item);
}
}
}
var slang=new SelectList(litem);
@Html.DropDownList("drpLang", @slang, new { @class = "dropdown"})
}
但无法检查列表中存在的相同项目。出了什么问题?
如果我没理解错的话,问题是 item 包含重复项,
这是因为您创建了对象项的新实例,而不是检查列表是否包含新实例(您不检查相同的 属性,而是检查完全相同的对象)。
更改此行:
if ((!(litem.Contains(item))))
对于这样的事情:
if (litem.All(i => i.Value != item.Value))
或者如果您需要独特的一对:
if (litem.All(i => i.Value != item.Value && i.Text!= item.Text))
还建议将所有登录移动到控制器中,并将 viewbag 用于 DropDownList
我想通过 'language' 属性 遍历子节点来动态创建 select 列表。因此,仅当之前未添加此 属性 值时才想将其添加为 select 列表项。
我有以下代码。
@{
var litem = new List<SelectListItem>();
litem.Insert(0, new SelectListItem { Selected = true, Text = "All", Value = "" });
foreach (var i in Model.Content.Children.Where("Visible"))
{
//if (i.GetProperty("language").Value != "")
if (i.GetProperty("language").Value != "")
{
string langstr = i.GetProperty("language").Value.ToString();
SelectListItem item = new SelectListItem { Selected = false, Text = langstr, Value = langstr };
if ((!(litem.Contains(item))))
{
litem.Add(item);
}
}
}
var slang=new SelectList(litem);
@Html.DropDownList("drpLang", @slang, new { @class = "dropdown"})
}
但无法检查列表中存在的相同项目。出了什么问题?
如果我没理解错的话,问题是 item 包含重复项, 这是因为您创建了对象项的新实例,而不是检查列表是否包含新实例(您不检查相同的 属性,而是检查完全相同的对象)。
更改此行:
if ((!(litem.Contains(item))))
对于这样的事情:
if (litem.All(i => i.Value != item.Value))
或者如果您需要独特的一对:
if (litem.All(i => i.Value != item.Value && i.Text!= item.Text))
还建议将所有登录移动到控制器中,并将 viewbag 用于 DropDownList