2

ドロップダウンを使用してユーザー名を選択し、[表示] をクリックすると、このユーザーが以前に予約したすべての休日が表示されます。

ここから、ユーザーは「新規作成」をクリックして新規作成ページに移動できます。別のドロップダウンから名前を再選択する代わりに、currentuserID を使用して、2 番目のドロップダウンをユーザー ID に置き換えました。

すべてが2つの別々のドロップダウンで正常に機能し、ユーザーは休日などを予約できました...しかし、今(ID値を保持するように2番目のドロップダウンを変更した後)コントローラーの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 に答える