我正在修改我繼承的C#MVC應用程序。MVC | Linq更新查詢|幫幫我!
我有一個數據庫,爲了簡單起見,我將重點介紹我爲這個linq查詢所使用的兩個表。
項目
項目ID詮釋PK
ITEMNAME
RepairSelection(是或否)
RepairID詮釋FK
修復
RepairID詮釋PK
RepairCategory
SubmissionDate
DateSen tForRepair
好了,項目ID是相當多的標識,並顯示修復的詳細信息,查看是這樣的(片段):
<%= Html.LabelFor(x => x.ItemID)%>
<%= Html.DisplayFor(x => x.ItemID)%><br />
<%= Html.LabelFor(x => x.Repair.RepairCategory)%>
<%= Html.DisplayFor(x => x.Repair.RepairCategory, "FormTextShort")%><br />
<%= Html.LabelFor(x => x.Repair.SubmissionDate)%>
<%= Html.DisplayFor(x => x.Repair.SubmissionDate)%><br />
<%= Html.LabelFor(x => x.Repair.DateSentForRepair)%>
<%= Html.DisplayFor(x => x.Repair.DateSentForRepair)%><br />
<%= Html.ActionLink("Edit Repair Details", "Edit", new { ItemID= Model.ItemID})%>
這裏是GET編輯動作:
public ActionResult Edit(Int64? itemId)
{
ModelContainer ctn = new ModelContainer();
var item = from i in ctn.Items where i.ItemID == itemId select i;
return View(item.First());
}
這也很好,GET編輯視圖顯示正確的細節。我卡住的地方是更新修復表的linq查詢。今天我嘗試了很多方法,我的頭只是被炒了(對於Linq來說你可能已經猜到了)。我最新的嘗試是在這裏(我知道是路要走這樣下去容易;-)):
[HttpPost]
public ActionResult Edit(Int64 itemId, Repair repair, Item item, FormCollection formValues)
{
if (formValues["cancelButton"] != null)
{
return RedirectToAction("View", new { ItemID = itemId });
}
ModelContainer ctn = new ModelContainer();
Repair existingData = ctn.Repair.First(a => a.RepairId == item.RepairID && item.ItemID == itemId);
existingData.SentForConversion = DateTime.Parse(formValues["SentForConversion"]);
ctn.SaveChanges();
return RedirectToAction("View", new { ItemID = itemId });
}
對於上述的嘗試,我得到一個序列不包含任何元素的錯誤。
任何幫助或指針,將不勝感激。多謝你們。
感謝您的回覆。我剛剛更新了我的問題。我應該提到在項目表中,我有一個'RepairSelection'列,它可以是或不是。當創建初始修復條目時,它會更新爲「是」。我通過這個條件篩選我的Items列表,所以數據肯定存在。我希望這可以更好地說明情況:) – 109221793 2011-01-30 23:22:54