在ASP.NET Core Razor Pages中填充下拉列表时出现空引用异常

3

我是ASP.Net Core的新手。我试图在Createmodel类中从Instructor模型中填充下拉列表,并且出现了"Null reference"异常。

以下是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

我遇到了这个异常 This Error 请给予建议...

1
@rfmodulator:这是一个 Razor 页面,而不是“传统”的 MVC 方法——没有单独的控制器。Razor 页面本身充当控制器。 - marc_s
2
@Reet:当你进行调试时,你的var instructors变量中是否有任何值? - marc_s
请问您能否发布一下您的.cshtml文件的指令?特别是@model指令。 - Luke Vo
1
@marc_s 你是对的。但现在我知道razor-pages标签是用来干什么的了。 :) - rfmodulator
显示剩余3条评论
1个回答

2

我在这里拼错了字段名:

Instructors = new SelectList(instructors, "ID", "FirstName");

已更改为:

Instructors = new SelectList(instructors, "InstructorID", "FirstName");

它开始工作了。 谢谢大家的帮助!!


1
我遇到了同样的问题,只是因为拼写错误,写成了“ID”而不是“Id” 已解决 - Waleed.alhasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接