私は、ユーザーが行った予約を表示できるビューを作成しようとしています。私は、異なる施設、ホール、部屋で2種類の予約のリストを保持するモデルを持っています。そのモデルには、ホール予約のリストとルーム予約のリストがあります。私のコントローラーでは、私はすべてのホールの予約をホールの予約リストに追加しようとしており、同じことはルームの予約に追加しようとしています。ここで c# - オブジェクト参照がオブジェクトのインスタンスに設定されていません - LINQ
public class AllBookingsViewModel
{
public List<HallActivityBooking> HallBookingsList { get; set; }
public List<RoomBooking> RoomBookingsList { get; set; }
}
は私のコントローラである:しかし、私はこのエラーここ
"Object reference not set to an instance of an object."
を取得していますが、私のモデルであり、ここで
public class BookingsController : BaseController
{
// GET: Bookings
public ActionResult Bookings()
{
//Get current user
var userId = User.Identity.GetUserId();
var currentUser = db.Users.Find(userId);
AllBookingsViewModel model = new AllBookingsViewModel();
//Fill activity booking
foreach (HallActivityBooking hallBooking in db.HallBookings.Where(x => x.CustomerUser.Id == currentUser.Id))
{
model.HallBookingsList.Add(hallBooking); //<< This is where I get an exception
}
//Fill room bookings list
foreach (RoomBooking roomBooking in db.RoomBookings.Where(x => x.CustomerUser.Id == currentUser.Id))
{
model.RoomBookingsList.Add(roomBooking);
}
return View(model);
}
すると、これらは私のコードではもはやまだない(私が試したものです):
私はモデルのように宣言しようとしました:
var model = new AllBookingsViewModel
私は、LINQのステートメントに "FirstOrDefault" を追加しようとしました:
foreach (HallActivityBooking hallBooking in db.HallBookings.Where(x => x.CustomerUser.Id == currentUser.Id).FirstOrDefault())
{
model.HallBookingsList.Add(hallBooking);
}
これは私に、このエラーを与える:
Severity Code Description Project File Line Suppression State Error CS0446 Foreach cannot operate on a 'method group'. Did you intend to invoke the 'method group'? ... 26 Active
ヘルプは
をいただければ幸いです
SOL VED
にここでは、私はこの問題を解決するためにやったことです:ため、各
ザ・は必要ではなかった、私はちょうどそれを価値のLINQ文のを与えることによって、ビューモデルを初期化するために必要な:
AllBookingsViewModel model = new AllBookingsViewModel();
{
model.HallBookingsList = db.HallBookings.Where(x => x.CustomerUser.Id == currentUser.Id);
model.RoomBookingsList = db.RoomBookings.Where(x => x.CustomerUser.Id == currentUser.Id);
};
それぞれの「HallBookings」レコードには、「CustomerUser」が関連付けられていますか?あなたが言及したエラーメッセージ、null参照例外から、私は、少なくとも1つの 'HallBookings'が' CustomerUser'としてnull参照を持っていると仮定することができます。 – Christos
FirstOrDefaultは、Where句の条件に一致するオブジェクトを1つだけ返します。だからforeachを使うことはできません。ヌル参照エラーをもたらすコード行はどれですか? –
'AllBookingsViewModel'のコレクションは初期化されていません。 – kiziu