因此我不必写出另一个例子来展示我在寻找什么。 请参考此example。
在数据库中使用该表的示例,我想在嵌套的下拉列表中使用Category
作为字幕(缺少更好的单词)。
所以这就是我到目前为止:
List<SelectListItem> lstAssignments = new List<SelectListItem>();
using(var context = new databaseconnectionstring()/*fake connection string name*/)
{
List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList();
foreach(table1 activity in lstActivity)
{
SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = activity.subcategory };
}
我在Group = activity.subcategory
下面收到错误。
Cannot implicitly convert type 'string' to 'system.web.mvc.selectlistgroup'
有意创建subcategory
属性以区分下拉列表(与引用链接中的Category
相同)
如何将subcategory
转换为要求的内容?
答案 0 :(得分:1)
正如错误提到的那样,您正在尝试为SelectListGroup属性提供String值。
您应该进行如下初始化:
foreach(table1 activity in lstActivity)
{
SelectListItem item = new SelectListItem()
{
Text = activity.text,
Value = activity.ID.ToString(),
Group = new SelectListGroup() { Name = activity.subcategory }
};
}
<强> [编辑] 强>
改进将在foreach之前声明SelectListGroup
s并相应地将它们分配给项目。这会产生更少的实例。
答案 1 :(得分:1)
错误告诉您确切需要做什么。 Group
属性的类型为SelectListGroup
,您将其传递给字符串,因此会出错。所以,放松一下,你只需要利用你的字符串创建一个SelectListGroup
的实例。 SelectListGroup
本身具有Name
属性,因此您应该可以执行以下操作:
foreach(table1 activity in lstActivity)
{
var group = new SelectListGroup { Name = activity.subcategory };
SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = group };
}
答案 2 :(得分:1)
这是因为您尝试设置的实际Group
属性需要SelectListGroup
个对象,而不是activity.subcategory
所在的字符串。
您需要做的是实际创建Group
的实例,并将其Name
属性设置为循环中的类别:
SelectListItem item = new SelectListItem() {
Text = activity.text,
Value = activity.ID.ToString(),
Group = new SelectListGroup(){ Name = activity.subcategory }};
答案 3 :(得分:0)
嘿抱歉这个问题。我只是想通了。
List<SelectListItem> lstAssignments = new List<SelectListItem>();
using(var context = new fakeconnectionstring())
{
List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList();
foreach(table1 activity in lstActivity)
{
SelectListGroup lstGroupCategories = new SelectListGroup() { Name = activity.subcategory };
SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = lstGroupCategories };
}
}
答案 4 :(得分:0)
public List<SelectListItem> CarregarDropDownList(Centro modeloSelected = null, string selecttext = null)
{
var centro = GetAtivos().GroupBy(x => x.Centro1).Select(group => group.First()).OrderBy(x => x.Centro1).ToList();
List<SelectListItem> lista = centro.Select(a => new SelectListItem() { Text = $"{a.Centro1}", Value = a.id_Centro.ToString(), Selected = (modeloSelected != null && modeloSelected.id_Centro == a.id_Centro) }).OrderBy(x => x.Text).ToList();
//if (modeloSelected == null)
lista.Insert(0, new SelectListItem() { Value = "", Text = selecttext ?? "-Todos-" });
return lista;
}