我正在尝试使用创建操作方法填充我的数据库。我表单上的两个字段是下拉菜单。下拉列表链接到两个单独的子表,这些子表最终将通过 create 方法发布在我的主父表上。我很难让这些下拉列表填充正确的数据。
我的模型:
public class County
{
[Key]
public string CountyName { get; set; }
}
public class Contact
{
[Key]
public int ContactId { get; set; }
public string ContactName { get; set; }
public class InspectionInfo
{
[Key]
public int InspectionId { get; set; }
//[Required]
public Contact Contact { get; set; }
//[Required]
public County County { get; set; }
我的控制器:
//
// GET: /Inspection1/Create
public ActionResult Create()
{
var model = new InspectionInfo
{
Submitted = DateTime.Now,
//Contact = new Contact()
};
ViewBag.CountyName = new SelectList(db.Counties,"CountyName", "CountyName");
ViewBag.Contactname = new SelectList(db.Contacts, "ContactName", "ContactName");
return View(model);
}
//
// POST: /Inspection1/Create
[HttpPost]
public ActionResult Create(InspectionInfo inspectioninfo)
{
if (ModelState.IsValid)
{
db.InspectionInfos.Add(inspectioninfo);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(inspectioninfo);
}
我的观点:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.County )
</div>
<div class="editor-field">
@Html.DropDownListFor(m=>m.County.CountyName,(IEnumerable<SelectListItem>)ViewBag.CountyName)
@Html.ValidationMessageFor(model => model.County)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Contact)
</div>
<div class="editor-field">
@Html.DropDownListFor(m=>m.Contact.ContactName, (IEnumerable<SelectListItem>)ViewBag.ContactName)
@Html.ValidationMessageFor(model => model.Contact)
</div>
目前,在休息期间检查字段值时,我继续收到 ContactName 的“1”。
此外,我收到 CountyName 的例外情况:
{"违反 PRIMARY KEY 约束 'PK_dbo.Counties'。无法在对象 'dbo.Counties' 中插入重复键。\r\n语句已终止。"}
任何帮助在这里将不胜感激。