2011-08-13 2 views
-2

При выборе обновления, что отсрочки или отмены, если столбец содержит «Я» он должен вернуть ошибку «не удается обновить. Событие уже удален»LINQ запрос для ASP.NET MVC 3

общественного ActionResult Отменить (интермедиат 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

При попытке отложить или отменить, если в столбце есть «Я», тогда я должен вернуть ошибку «Can not Postpone/Cancel». 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, поэтому вам не нужно бросать, но вы получаете общую идею. Кроме того, вы должны, вероятно, отфильтровать недействительные события из списка, который вы создаете, чтобы отменить их в первую очередь, чтобы избежать этой ситуации.

ДО UPDATE:

Я не знаю точно, что вы пытаетесь сделать, но пример запроса 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"); 

R однако вы не должны использовать значения, такие как «I», «C» или «P», чтобы определить статус вашей записи, вместо этого вы должны создать таблицу состояния в своей базе данных и создать внешний ключ на Id статус.

+0

Действительно извините, новый для Stackoverflow, просто изучив, как его использовать. Это для системы событий. Если я хочу отложить или отменить событие, код должен сначала проверить, является ли статус события InActive, если он неактивен, он должен возвращать ошибку. – Alss

+0

Хорошо. Я обновил свой ответ, чтобы лучше отразить то, что вы пытаетесь сделать выше, на основе вашего разъяснения. – shuniar

+0

Спасибо, но есть ли способ показать результат проверки вместо того, чтобы выбрасывать исключение? – Alss