Моя проблема: я получаю нулевое значение поставщика (который является внешним ключом в таблице покупок), когда я успешно отправляю действие редактирования или создания покупки!
Мой вопрос: как получить значение внешнего ключа, отправленное втаблица вместо получения нулевого значения?
Вот мои модели:
public class Purchase
{
[Required(ErrorMessage = "Invoice No. must be uniqe!")]
[Display(Name = "Invoice No.")]
public string Id { get; set; }
[Display(Name = "yyyy-MM-dd")]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime date { get; set; }
//[Display(Name = "Supplier")]
//public int supplier_id { get; set; }
[Display(Name = "Qty")]
public decimal amount { get; set; }
[Display(Name = "Discount")]
public decimal? discount { get; set; }
[Display(Name = "Total")]
[Required]
public decimal grand_total { get; set; }
[Display(Name = "Paid?")]
public bool is_paid { get; set; }
[Display(Name = "Last update")]
public DateTime? last_updated { get; set; }
[Display(Name = "Description")]
public string description { get; set; }
public virtual Supplier Supplier { get; set; }
public virtual ICollection<PurchaseProduct> PurchaseProducts { get; set; }
}
public class Supplier
{
public Supplier()
{
this.address = "N/A";
}
public int ID { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Only 50 characters allowed!")]
public string name { get; set; }
public string address { get; set; }
public string contact { get; set; }
public string description { get; set; }
public virtual ICollection<Purchase> Purchases { get; set; }
}
Все поставщики, извлеченные из таблицы поставщиков для просмотра покупок в словаре Viewbag в виде выпадающего списка
Вотмое действие создания:
public ActionResult Create()
{
//var model = db.Suppliers.FirstOrDefault();
ViewBag.MyHeaders2 = new SelectList(db.Suppliers, "ID", "name");
return View();
}
// POST: Purchases/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "id,date,supplier_id,amount,discount,grand_total,is_paid,last_updated,description")] Purchase purchase)
{
if (ModelState.IsValid)
{
db.Purchases.Add(purchase);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(purchase);
}
и вот раскрывающийся список в моем представлении создания:
@model PointOfSales.Models.Purchase
<div class="form-group">
@Html.LabelFor(model => model.Supplier, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Supplier, (SelectList)ViewBag.MyHeaders2, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Supplier, "", new { @class = "text-danger" })
</div>
</div>
