2011-08-13 44 views
-2

當選擇來更新推遲或取消,若列中含有「I」,它應該返回錯誤「無法更新。事件已刪除」LINQ查詢3

公衆的ActionResult取消(INT ID ) { var events = db.Events.Find(ID); 返回PartialView(事件); }

// 
    // POST: /Events/Delete/5 

    [HttpPost] 

    public ActionResult Cancel(FormCollection Collection) 
    { 
     var ID = Collection["Event_ID"]; 
     int intID = int.Parse(ID); 
     var events = db.Events.Find(intID); 


     // If OK to Cancel , set status to C 

     events.Event_Status = "C"; 
     if (TryUpdateModel(events)) 
     { 
      db.SaveChanges(); 
      string ConfirmMessage = "Event Successfully Cancelled"; 
      return RedirectToAction("Confirm", "Admin", new { ConfirmMessage = ConfirmMessage }); 
     } 
     else 
     { 
      return PartialView(events); 
     } 
    } 
+0

我認爲你應該改變你的問題,不容易明白你在問什麼。 – Bassetassen

+0

當試圖推遲或取消,如果列有「我」,那麼我應該返回錯誤「不能推遲/取消。狀態已經inActive(刪除)「 – Alss

+0

請*更新*您的問題,不要發表額外的評論澄清。此外,代碼將會有所幫助。 – rkaregaran

回答

0

UPDATE:

如果你想,如果如果你想取消事件的其他任何事件都不活動

if (events.Contains(e => e.Status.Equals("I")) 
    throw new Exception("Error :: Cannot cancel an event that is already inactive"); 

拋出一個錯誤,警告關於無效的:

var invalidEvents = events.Where(e => e.Status.Equals("I")).ToList(); 
var validEvents = events.Where(e => !invalidEvents.Contains(e)).ToList(); 

// update valid events 

var summary = new { Successes = validEvents, Failures = invalidEvents }; 

return View(summary); 

你想讓匿名類型爲ViewModel,所以你不必投射,但你得到的一般想法。另外,您應該從列表中篩選出您生成的無效事件,以便首先取消它們以避免這種情況。

之前更新:

我不知道你想要做什麼,但LINQ查詢的這個例子中的無用的記錄是這樣的:

var inactiveRecords = from x in dbContext.Records 
         where x.Status.Equals("I") 
         select x; 

要對這些記錄的一個更新拋出一個錯誤輸入「C」或「P」的時候,你會做這樣的事情:

var recordToUpdate = inactiveRecords.FirstOrDefault(); 
var input = Console.ReadLine(); 

if (recordToUpdate.Status.Equals("I") && (input.Equals("C") || input.Equals("P")) 
    throw new Exception("Error :: Cannot update status of an inactive record"); 

儘管如此,你不應該使用像「I」,「C」或「P」這樣的值來確定記錄的狀態,而應該在數據庫中創建一個狀態表並在ID上創建一個外鍵的狀態。

+0

真的很抱歉Stackoverflow的新增功能,因此您只需學習如何使用它。它用於事件系統,如果我想推遲或取消一個事件,代碼應該首先檢查事件狀態是否是InActive,如果它是無效的,它應該返回錯誤。 – Alss

+0

它確定。根據你的澄清,我已經更新了我的答案,以更好地反映你正在嘗試做的事情。 – shuniar

+0

謝謝你,但有沒有辦法顯示驗證結果而不是拋出異常? – Alss