目前我正在研究C#ASP.NET MVC并且正在尝试根据过去一年(2008-2017)填充下拉列表。在线下载了一些指南后,我遇到了这个错误:
编译错误:"错误是" CS1061:不包含'年'的定义没有延期的方法'年'接受第一个类型的参数可以找到'。"
我完全不知道这个错误。我甚至不确定这是否是因为下拉或不下降。请参阅下面的我的代码
YearViewModel.cs
[Required]
[Display(Name = "Year")]
public int Year{ get; set; }
YearController.cs
public ActionResult Index()
{
List<int> last10Years = new List<int>();
int currentYear = DateTime.Now.Year;
for (int i = currentYear - 10; i < currentYear; i++)
{
last10Years.Add(i);
}
ViewBag.LastTenYears = new SelectList(last10Years);
return View();
}
Index.cshtml
@model IEnumerable<Practice.Models.YearViewModel>
<div>
<dl class="dl-horizontal">
<dt>@Html.LabelFor(m => m.Year)</dt>
<dd>@Html.DropDownList("Last Ten Years", (IEnumerable<SelectListItem>)ViewBag.LastTenYears, "Select A Year")</dd>
</dl>
</div>
此区域突出显示错误
<dt>@Html.LabelFor(m => m.Year)</dt>
注意:我确实试图在线找到解决方案,但没有成功
答案 0 :(得分:0)
这是一个非常简单的解决方法:
@model YearViewModel
<div>
<dl class="dl-horizontal">
<dt>@Html.LabelFor(m => m.Year)</dt>
<dd>@Html.DropDownList("Last Ten Years", (IEnumerable<SelectListItem>)ViewBag.LastTenYears, "Select A Year")</dd>
</dl>
</div>
View不会返回也不会使用YearViewModel
的集合。它通过ViewBag
接收一个,但那是另一个故事。