有人可以解释下面的代码

时间:2014-05-20 06:37:10

标签: c# asp.net-mvc-4 asp.net-mvc-5

有人可以解释以下代码,尤其是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[]是否会创建新的选择列表?

5 个答案:

答案 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