有人可以解释以下代码,尤其是new[]
@Html.DropDownListFor(x => x.WillAttend,new[] {
new SelectListItem() { Text = "Yes, I'll be there", Value = bool.TrueString},
new SelectListItem() { Text = "No, I can't come", Value = bool.FalseString}}, "Choose an option")
new[]
是否会创建新的选择列表?
答案 0 :(得分:1)
new[]
不是匿名类型,它是类型SelectListItem[]
的{{3}}。使用implicitly typed array添加SelectListItem
类型的项目时,会推断出数组的类型(SelectListItem
)。
您正在使用DropDownListFor
的{{3}}。由于SelectListItem[]
来自IEnumerable<SelectListItem
,因此可行。您也可以使用List
例如:new List<SelectListItem> { new SelectListItem { ... }, new SelectListItem { ... } }
。
答案 1 :(得分:0)
代码创建一个类型为SelectList
的新数组,并向其添加两个新的SelectListItem
项。这是你的新下拉列表。
答案 2 :(得分:0)
new []是否会创建新的选择列表?
new[]
创建一个新的Array对象。考虑DropDownListFor
的第二个参数
是IEnumerable<SelectListItem>
,数组顺利地转换为所需的类型。
答案 3 :(得分:0)
这是正确的,数组中的new []列出了初始值设定项。所以在这种情况下,你创建一个数组或一个列表,我不知道dropdownlistfor接受的类型,它有2个类型为SelectListItem的项。
答案 4 :(得分:0)
@Html.DropDownListFor()
看起来像Razor视图引擎的Razor语句。该语句将生成HTML选择列表。此函数的argmuent(()
之间的东西)构成列表的内容,在这种情况下,该列表的内容是从new[]{...}
语句生成的,该语句创建一个填充了{{中{{1}项内的项的新数组1}}在这种情况下{}
s。
整个声明应该产生如下内容:
SelectListItem