座位保留系统

时间:2011-04-06 22:29:15

标签: asp.net-mvc ado.net

图像显示我的表格是如何设置的

enter image description here

更新

我有一个工作预备座位,现在加到预订表。

//
    // POST: /Home/CreateBooking

    public ActionResult CreateBooking(String id, DateTime date, DateTime time)
    {
        ViewData["username"] = User.Identity.Name;
        ViewData["performanceDate"] = date;
        ViewData["Venue"] = id;

        BookingCreate model = new BookingCreate();
        model.Seats = (from c in _db.Seat
                       where c.venue == id
                       select c);



        return this.View(model);

    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult CreateBooking(BookingCreate bookingCreate, IList<String> seatNumber)
    {

        Customer theCustomer
            = (from c in _db.Customer
               select c).First<Customer>(c => c.username == bookingCreate.customer);


        //performance details for the performance selected by the user
        Performance thePerformance
            = (from p in _db.Performance
               select p).FirstOrDefault<Performance>(p => p.performanceDate == bookingCreate.performanceDate || p.performanceTime == bookingCreate.performanceTime || p.venue == bookingCreate.venue);

        //performance details for the performance selected by the user
        Performance seatbooking
            = (from p in _db.Performance
               select p).FirstOrDefault<Performance>(p => p.performanceDate == bookingCreate.performanceDate || p.performanceTime == bookingCreate.performanceTime || p.venue == bookingCreate.venue);


        var now = DateTime.UtcNow;
        var bookingToCreate = new Booking();
        bookingToCreate.bookingDate = now;
        bookingToCreate.bookingTime = now;
        bookingToCreate.bookingType = "Web";
        bookingToCreate.collect = true;
        bookingToCreate.Customer = theCustomer;
        bookingToCreate.Performance = thePerformance;




        _db.AddToBooking(bookingToCreate);
        _db.SaveChanges();

        var bookingnumber = (from p in _db.Booking
                             select p.bookingNo);



        foreach (var displaySeat in seatNumber)
        {


            Seat theseat
      = (from c in _db.Seat

         select c).FirstOrDefault<Seat>(c => c.seatNumber == displaySeat);


            var seatBooking = new SeatBooking();

            seatBooking.Booking = bookingToCreate;
            seatBooking.Seat = theseat;




            _db.AddToSeatBooking(seatBooking);
            _db.SaveChanges();

        }

        return RedirectToAction("ShowsIndex");
    }

该代码可确保显示正确的场地座位,并确保选择登录的用户和所选的演出。

我坚持的是......

我目前正在输出座位作为复选框

BookingCreate model = new BookingCreate();
                model.Seats = (from c in _db.Seat
                               where c.venue == id
                           select c);

但是我希望复选框显示他们所关联的座位号(目前它们只是一个空白的复选框)

还有如何停止显示已预订的座位以停止复制。

由于

1 个答案:

答案 0 :(得分:1)

我会这样做(假设有代理主键Customer.Id和Performance.Id)

public class BookingToCreateVM
{
    public int BookingNo{get; set;}
    //..etc - all necessary booking fields

    public Guid UserId{get; set;}
    public Guid PerformanceId{get; set;}

    //data for something like dropdowns in view
    public IList<Customer> Users{get; set;}
    public IList<Performance> Performances{get; set;}
}

和控制器操作

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateBooking(BookingToCreateVM bookingToCreateVM)
{

    Customer theCustomer
        = (from c in _db.Customer
           select c).Single<Customer>(c=>c.Id == bookingToCreateVM.UserId);


    Performance thePerformance
        = (from p in _db.Performance
           select p).Single<Performance>(p=> p.Id == bookingToCreateVM.PerformanceId);

    var bookingToCreate = new Booking();  
    bookingToCreate.BookingNo= bookingToCreateVM.BookingNo;
    //..etc - initialize all necessary fields
    bookingToCreate.Customer = theCustomer;
    bookingToCreate.Performance = thePerformance;

    _db.AddToBooking(bookingToCreate);
    _db.SaveChanges();

    return RedirectToAction("ListBookings");
}