2

因此,使用下拉菜单选择用户名,然后单击“查看”,它将显示该用户之前预订的所有假期。

从这里用户可以单击“新建”,这会将他们带到一个新建页面。我不必从另一个下拉列表中重新选择他们的名字,而是跨越 currentuserID 并将第二个下拉列表替换为用户 ID。

使用 2 个单独的下拉菜单,一切正常,用户可以预订假期等...但是现在(在我更改第二个下拉菜单以保存 ID 值之后)我从控制器中的 listHoliday 方法中收到错误消息:

错误:用户代码未处理 InvalidOperationException。序列不包含任何元素。

var dbPerson1 = (from p in db.People
                             where p.Id == PersonId
                             select p).Single();

谁能建议该怎么做?

4

2 回答 2

3

这意味着您正在执行的 linq 查询不返回任何结果,到 .Single() 会引发异常。

尝试

var dbPerson1 = (from p in db.People
                         where p.Id == PersonId
                         select p).FirstOrDefault(); // or use SingleOrDefault() if People are unique

if (dbPerson1==null) 
{
    throw new HolidayAllocationException("Person not found");
}
else
{
    // person found
    if (dbPerson.HolidaysRemaining > 0) 
    {
        AllocateHoliday(); // or whatever you need to do
    }
    else 
    {
        throw new NoHolidayLeftException(); 
    }
 }

dbPerson1如果查询没有返回任何内容,则将为 null。

希望有帮助

于 2012-12-18T13:48:31.257 回答