【发布时间】:2021-11-06 18:36:37
【问题描述】:
在我的应用程序中,我试图通过使用 EF Core 从数据库中获取数据来填充下拉菜单,但不幸的是我已经尝试了两天没有成功。
我已尝试按照post 中的建议执行此操作,但我不断收到错误。
更具体地说,我现在面临的错误是
“IEnumerable”不包含“Years”的定义,并且找不到接受“IEnumerable”类型的第一个参数的可访问扩展方法“Years”
这个错误来自视图:
@Html.DropDownList(m => m.Years, Model.Years, "-- Select year --")
这是我的模型类:
public partial class Bdgfixmonth
{
public int Counter { get; set; }
public int Byear { get; set; }
//
public IEnumerable<SelectListItem> Years { get; set; }
public string Bbudget { get; set; }
public int Bmonth { get; set; }
public string Blongmonth { get; set; }
public int Closed { get; set; }
public string Current { get; set; }
}
这是我的 GET 操作方法 Index 的控制器:
private readonly salesContext _context;
public IEnumerable<SelectListItem> Years { get; set; }
public bdgfixmonthController(salesContext context)
{
_context = context;
}
public async Task<IActionResult> Index()
{
var bdgfixmonths = await _context.Bdgfixmonths.ToListAsync();
IEnumerable<SelectListItem> GetAllYears()
{
IEnumerable<SelectListItem> list = _context.Bdgfixmonths
.AsEnumerable()
.Select(s => new SelectListItem
{
Selected = false,
Text = s.Byear.ToString(),
Value = s.Byear.ToString()
});
return list;
}
Years = GetAllYears();
return View(bdgfixmonths);
}
这里的目标是用 db 的数据填充下拉菜单,然后根据选择的值进行查询,以便只显示相关的值(在这种情况下基于年份)。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
您好,我是指较新的 .NET 5。
-
您也忘记设置模型的属性:bdgfixmonths.Years = GetAllYears()
-
是的,抱歉,我现在包含了变量声明。
标签: c# entity-framework-core asp.net-core-mvc asp.net-core-5.0