我是 ASP.Net core 的新手。我正在尝试从
Createmodel
模型填充类 Instructor
中的下拉列表,并获得“空引用”异常。
这是cshtml.cs文件中的代码:
public SelectList Instructors { get; set; }
public async Task OnGetAsync()
{
var students = from s in _context.User_Profile
select s;
if (!string.IsNullOrEmpty(SearchString))
{
students = students.Where(s => s.FirstName.Contains(SearchString));
}
UserProfile = await students.ToListAsync();
var instructors = from i in _context.Instructor
orderby i.FirstName
select i;
Instructors = new SelectList(instructors, "ID", "FirstName");
}
我的 cshtml 视图中有以下标记:
<div class="form-group">
<label asp-for="Class_Info.Instructor" class="control-label"></label>
<select asp-for="Class_Info.Instructor" class="form-control" asp-items="@Model.Instructors">
<option value="">-- Select --</option>
</select>
</div>
我收到错误:
@Model.Instructors
请指教...
我在这里拼错了字段名称:
Instructors = new SelectList(instructors, "ID", "FirstName");
更改为:
Instructors = new SelectList(instructors, "InstructorID", "FirstName");
它开始起作用了。 谢谢大家的帮助!!
对于那些可能遇到此错误但检查了所有拼写的人。另一个例子是,在初始化
SelectList
时,您传递的是字段而不是属性。确保有这些 getter/setter。就这样!调试愉快! :P