作成アクション メソッドを使用してデータベースにデータを入力しようとしています。私のフォームの 2 つのフィールドはメニューのドロップダウンです。ドロップダウンは、create メソッドを介して最終的にメインの親テーブルに投稿される 2 つの個別の子テーブルにリンクされています。これらのドロップダウンに正しいデータを入力するのに非常に苦労しています。
私のモデル:
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ステートメントは終了しました。"}
ここで何か助けていただければ幸いです。