【发布时间】:2016-09-08 22:48:49
【问题描述】:
我正在尝试使用代码优先数据库在 ASP.NET MVC 中创建新的数据库记录。我为带有脚手架和视图的模型创建了控制器,每次我尝试在创建模型时执行 POST 时,该模型永远无效,我尝试创建的模型的成员的两个模型始终为空。
以下是在我的控制器中创建 POST 的代码。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "DeviceNumber,ManufacturerNumber,CarrierNumber,Name")] Device device)
{
if (ModelState.IsValid)
{
db.Devices.Add(device);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CarrierNumber = new SelectList(db.Carriers, "CarrierNumber", "CarrierID", device.CarrierNumber);
ViewBag.ManufacturerNumber = new SelectList(db.Manufacturers, "ManufacturerNumber", "ManufacturerID", device.ManufacturerNumber);
return View(device);
}
以下是我正在尝试创建的模型。 ModelState 中的错误总是告诉我 Manufacturer 和 Carrier 为空,但它们是必需的。
public class Device
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DeviceNumber { get; set; }
[ForeignKey("ManufacturerNumber"), Required]
public virtual Manufacturer Manufacturer { get; set; }
public int ManufacturerNumber { get; set; }
[ForeignKey("CarrierNumber")]
[Required]
public virtual Carrier Carrier { get; set; }
public int CarrierNumber { get; set; }
[Required]
public string Name { get; set; }
}
我尝试在 Create 方法中分配运营商和制造商,但仍然导致验证失败。
【问题讨论】:
-
你看到为什么被标记为无效了吗?
-
请使用查看代码更新您的问题。不看你的观点很难猜出答案。
-
将模型发送到视图不是一个好习惯。创建一个 VIewmodel 类并将其发送到视图。
标签: c# asp.net-mvc ef-code-first