2011-11-08 2 views
0

Я создал метод действия редактирования, но он не входит в ModelState.isValid. Как я могу проверить ошибку?ModelState.isValid error

public PartialViewResult UpdateAccountDetails(string accountNumber) 
    { 
     CreditReportService crService = new CreditReportService(); 

     AccountInfo account = new AccountInfo(); 
     account.Account = service.GetAccountDetails(accountNumber); 
     account.AccountStatuses = service.GetAccountStatuses(); 
     account.AccountTypes = service.GetAccountTypes(); 
     account.CreditTerms = service.GetCreditTerms(); 

     return PartialView("_UpdateAccountDetails", account); 
    } 

    [HttpPost] 
    public ActionResult UpdateAccountDetails(Account account) 
    { 
     if (ModelState.IsValid) 
     { 
      service.SaveAccount(account); 
      TempData["message"] = "Account has been updated successfully!"; 

      AccountInfo accountInfo = new AccountInfo(); 
      accountInfo.AccountStatuses = service.GetAccountStatuses(); 
      accountInfo.AccountTypes = service.GetAccountTypes(); 
      accountInfo.CreditTerms = service.GetCreditTerms(); 
      return PartialView("_UpdateAccountDetails", accountInfo); 
     } 
     else 
     { 
      return PartialView("_UpdateAccountDetails", account); 
     } 
    } 

ответ

10

Доступ к коллекции ModelState.Errors. Коллекция содержит коллекцию из ModelError элементов, содержащих сообщение об ошибке и исключение, которое было вызвано причиной ошибки модели.


Edit: Я предполагаю, что я должен был выглядеть сам. Похоже, что контроллер ModelState на самом деле является (словарной) коллекцией ModelState. Для того, чтобы получить все ошибки, вы должны быть в состоянии получить все экземпляры ModelError классов с помощью:

var errors = ModelState.Select(x => x.Value.Errors).ToList(); 
+0

Я не вижу никаких моделей ModelState.Errors .... – DotnetSparrow

+0

Обновлено, не понял, что ModelState контроллера был другим. – KallDrexx

+0

ModelState не имеет метода выбора. Я получаю ошибку при выборе. – DotnetSparrow

1
var errors = var errors = ModelState.Where(m=>m.Value.Errors.Any()).Select(m => m.Value.Errors).ToList(); 

Чтобы получить только список ошибочных полей только, а не всех полей и список ошибок (исключить Длина ошибок == 0).

Смежные вопросы