У меня есть Delivery Create View
, в котором я выбираю Orders
, чтобы добавить к этому Delivery
. Однако, похоже, он не хочет сохранять ссылку в базе данных. Создается Delivery
, потому что я могу видеть его там, если я вернусь в программу, но проблема заключается в получении Orders
для ссылки на этот Delivery
.Сохранение выбранных заказов на основании идентификатора объекта доставки
Он продолжает бить меня, когда я нажимаю кнопку «Сохранить» после того, как все данные для доставки введены, и выбранные мной заказы были выбраны.
Проблема, похоже, связана с этой строкой, когда я пытаюсь сохранить order.DeliveryID = delivery.DeliveryID;
, и сообщение об ошибке «Исключение типа« Исключение System.NullReferenceException »произошло в HealthHabitat.dll, но не было обработано в коде пользователя». Я немного поработал над этим, но я не уверен, как это исправить в отношении моей ситуации.
Пожалуйста, учтите, что я довольно новичок в Asp.Net MVC, поэтому любая помощь будет принята с благодарностью!
Это то, что я до сих пор:
Создание POST Метод:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(DeliveryVM model)
{
Delivery delivery = new Delivery()
{
DriverID = model.DriverID,
Dispatched_Date = DateTime.Now,
Dispatched_Time = DateTime.Now
};
db.Deliverys.Add(delivery);
db.SaveChanges();
// save the selected orders based on the ID of the Delivery object
IEnumerable<int> selectedOrders = model.Orders.Where(o => o.IsSelected).Select(o => o.ID);
foreach (int ID in selectedOrders)
{
Order order = db.Orders.Where(o => o.OrderID == ID).FirstOrDefault();
order.DeliveryID = delivery.DeliveryID;
db.Entry(order).State = EntityState.Modified;
}
db.SaveChanges();
return RedirectToAction("Details", new { id = delivery.DeliveryID })
;
Создать Вид:
@for (int i = 0; i < Model.Orders.Count; i++)
{
<tr>
<td style="width:auto">
@Html.DisplayFor(m => m.Orders[i].ID)
</td>
<td style="width:auto">
@Html.LabelFor(m => m.Orders[i].IsSelected, Model.Orders[i].Name,htmlAttributes: new { @class = "control-label col-md-2" })
</td>
<td style="width:auto">
@Html.CheckBoxFor(m => m.Orders[i].IsSelected, new { htmlAttributes = new { @class = "form-control" } })
</td>
</tr>
}