XML到下拉列表使用LINQ
本文关键字:LINQ 下拉列表 XML | 更新日期: 2023-09-27 17:49:39
下面的代码没有这一行也可以正常工作:"。Insert(0, new SelectListItem(){Text =", Value=", Selected = false})"…基本上,我试图添加一个空白值下拉,我得到这一行的错误是"不能从void转换为SelectListItem。"关于如何正确添加空白有什么想法吗?
@Html.DropDownListFor(model => model.itemPost.txtVal,
new List<SelectListItem>(
(from node in
System.Xml.Linq.XDocument.Parse(Model.itemQuestionRowDef.SupportingXML).Descendants("option")
select new SelectListItem
{
Text = node.Value,
Value = node.Attribute("value").Value,
Selected = node.Attribute("value").Value == Model.itemPost.txtVal ? true : false
}
)
).Insert(0, new SelectListItem(){Text = "", Value="", Selected = false}),
new { @class = "tobeFilled", id = "id_" + Model.counter, Name = "questionLst[" + Model.counter + "]." + "txtVal" })
由于错误试图告诉您,List<T>.Insert()
不返回任何内容,因此您不能在表达式中使用它。
Concat()
方法,它返回一个新的序列:
new[] { new SelectListItem(...) }
.Concat(from node in ...
select ...
)
返回类型的Insert
是void
。它修改你的列表。所以你需要创建和修改你的列表。然后将其传递给函数:
var list = new List<SelectListItem>(
(from node in System.Xml.Linq.XDocument.Parse(Model.itemQuestionRowDef.SupportingXML).Descendants("option")
select new SelectListItem
{
Text = node.Value,
Value = node.Attribute("value").Value,
Selected = node.Attribute("value").Value == Model.itemPost.txtVal ? true : false
}));
list.Insert(0, new SelectListItem(){Text = "", Value="", Selected = false});
@Html.DropDownListFor(model => model.itemPost.txtVal,list,new { @class = "tobeFilled", id = "id_" + Model.counter, Name = "questionLst[" + Model.counter + "]." + "txtVal" });