asp.net mvc бритва veiwbag не работает с каркасом объекта tolist () - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь связать данные на моей chtml странице, используя viewbag , но она не работает.

Мой контроллер

public ActionResult ViewInvoice(decimal id)
        {
            var invoice_data = db.Invoices    // your starting point - table in the "from" statement
                            .Join(db.Users, a => a.CreatedBy, b => b.UserID, (a, b) => new { a.VehicleID, a.VehicleCheckOut, a.InvoiceID, a.InvoiceStatus, a.ChargeAmount, a.VehicleNo, a.VehicleRiderName, a.VehicleRiderPhone, a.IsVehicleExtra, a.VehicleCheckIn, a.VehicleLimitOut, b.UserFirstName, b.UserLastName, b.CreatedOn })
                            .Join(db.ParkingStatus, a => a.InvoiceStatus, b => b.PStatusID, (a, b) => new { b.PStatusName, b.PStatusKey, a.VehicleID, a.VehicleCheckOut, a.InvoiceID, a.InvoiceStatus, a.ChargeAmount, a.VehicleNo, a.VehicleRiderName, a.VehicleRiderPhone, a.IsVehicleExtra, a.VehicleCheckIn, a.VehicleLimitOut, a.UserFirstName, a.UserLastName, a.CreatedOn })
                            .Join(db.Vehicles, a => a.VehicleID, b => b.VehicleID, (a, b) => new { a.PStatusName, a.PStatusKey, a.VehicleCheckOut, a.InvoiceID, a.InvoiceStatus, a.ChargeAmount, a.VehicleNo, a.VehicleRiderName, a.VehicleRiderPhone, a.IsVehicleExtra, a.VehicleCheckIn, a.VehicleLimitOut, b.VehicleName, a.UserFirstName, a.UserLastName, a.CreatedOn })
                           .Join(db.ParkingStatus, // the source table of the inner join
                               sp => sp.InvoiceStatus,        // Select the primary key (the first part of the "on" clause in an sql "join" statement)
                               st => st.PStatusID,   // Select the foreign key (the second part of the "on" clause)
                               (sp, st) => new { sp.PStatusName, sp.PStatusKey, sp.UserFirstName, sp.UserLastName, sp.CreatedOn, sp.VehicleCheckOut, sp.InvoiceID, sp.VehicleCheckIn, sp.VehicleLimitOut, sp.IsVehicleExtra, sp.VehicleRiderName, sp.VehicleRiderPhone, sp.ChargeAmount, sp.VehicleName }).Where(x => x.InvoiceID == id).ToList();


            ViewBag.invoice_data = invoice_data;
            return View();
        }

Я пытаюсь получить доступ с ниже, но это не работает

@((ViewBag.invoice_data as List<PMS.Models.Invoice>).First().InvoiceID)

Ниже ошибка

Моя страница Chtml

@{
    ViewBag.Title = "View Invoice";
    ViewBag.MainTitle = "View Invoice";
}
<section class="invoice">
                                @((ViewBag.invoice_data as List<PMS.Models.Invoice>).First().InvoiceID)
                            </section>

Error

1 Ответ

1 голос
/ 07 марта 2019

в коде вашего контроллера

(sp, st) => new { sp.PStatusName,

это анонимный тип, поэтому as (в представлении) завершается ошибкой и возвращает ноль

Попробуйте

(sp, st) => new PMS.Models.Invoice { sp.PStatusName,

Кстати: использование строго типизированного представления было бы намного безопаснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...