我有點尷尬。ASP.NET MVC:嘗試保存對集合的更改時發生UpdateModel失敗 - 創建新對象而不是更新
基本上,我試圖創建一個對象的集合--EF對象的準確編輯。 我將視圖傳遞給包含Call類型對象的視圖模型。這是一個EF類型。一個電話有很多答案。在視圖我遍歷所有的答案和輸出的形式:
@using (Html.BeginForm())
{
foreach(var a in Model.Answers)
{
Html.RenderPartial("_AnswerForm", a);
}
<input type="submit" value="Save Answers" />
}
局部視圖如下:
@using (Html.BeginCollectionItem("Answers"))
{
<div data-role="fieldcontain">
@Html.HiddenFor(z => z.QuestionID)
@Html.HiddenFor(z => z.CallID)
@Html.LabelFor(x => x.OnEntryAnswer)
@Html.CheckBoxFor(x => x.OnEntryAnswer)
@Html.ValidationMessageFor(x => x.OnEntryAnswer)
@Html.LabelFor(x => x.OnExitValue)
@Html.TextBoxFor(x => x.OnExitValue)
@Html.ValidationMessageFor(x => x.OnExitValue)
@Html.HiddenFor(x => x.id)
</div>
}
我的控制器動作看起來像....
[HttpPost]
public ActionResult FacingsAdjacency(FormCollection data)
{
Call activeCall = null;
try { activeCall = this.GetCallInformation(); }
catch (NoActiveCallException ex) { TempData["message"] = "No Call In Progress!"; RedirectToAction("NoCallInProgress"); }
QuestionFormViewModel vm = new QuestionFormViewModel(activeCall, "FacingsAdjacency");
UpdateModel(activeCall.CallAnswers, "Answers");
callRepository.Save();
return View(vm);
}
當調用Save(調用savechanged在上下文中)時拋出錯誤:
的關係無法改變,因爲一個或多個外鍵的屬性 的是不可爲空
如果我檢查的datacontext是跟蹤我看到的項目有兩倍多應該有。有三個要修改(正確),三個具有完全相同的細節,標記爲已添加。所有的數據都通過POST來填充EF對象 - 我只是不確定它爲什麼失敗。
感謝
有趣。愚蠢的問題,但我怎麼才能'獲得'的UpdateModel可以做它的業務之前的答案? – Sergio
在UpdateModel之後,而不是之前。然後你可以遍歷activeCall.Answers。 –