2011-01-16 17 views
9

Mam następujący kod, ale nie są wyświetlane błędy. Co jest nie tak ?Wyświetlanie błędu stanu modelu

public ActionResult DeleteRateGroup(int id) 
    { 
     try 
     { 
      RateGroup.Load(id).Delete(); 

      RateGroupListModel list = new RateGroupListModel(); 
      return GetIndexView(list); 
     } 
     catch (Exception e) 
     { 
      RateGroupListModel model = new RateGroupListModel(); 

      if (e.InnerException != null) 
      { 
       if (e.InnerException.Message.Contains("REFERENCE constraint")) 
        ModelState.AddModelError("Error", "The user has related information and cannot be deleted."); 
      } 
      else 
      { 
       ModelState.AddModelError("Error", e.Message); 
      } 
      return RedirectToAction("RateGroup", model); 
     } 
    } 

@model MvcUI.Models.RateGroupListModel 

@{ 
    View.Title = "RateGroup"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Rate Group</h2> 

@Html.ValidationSummary() 

@using (Html.BeginForm()) 

private ActionResult GetIndexView(RateGroupListModel model) 
    { 
     return View("RateGroup", model); 
    } 

    public ActionResult RateGroup(RateGroupListModel model) 
    { 
     return GetIndexView(model); 
    } 

Odpowiedz

13

Wygląda jakbyś ustawiania błąd ModelState, następnie przekierowanie do innej akcji. Jestem pewien, że ModelState ginie, kiedy to robisz.

Zazwyczaj po prostu chcesz renderować widok RateGroup bezpośrednio z działaniem DeleteRateGroup bez przekierowania, przechodząc w modelu w razie potrzeby, na przykład:

return View("RateGroup", model); 

Jeśli chcesz ModelState przyjść do druga akcja z tobą, spójrz na ModelStateToTempDataAttribute MvcContrib. Oto opis atrybutu, z uwagi kodu źródłowego MvcContrib za:

Kiedy RedirectToRouteResult zwracany jest z działaniem, coś w słowniku ViewData.ModelState zostaną skopiowane do TempData. Gdy obiekt ViewResultBase zostanie zwrócony z działania, wszelkie wpisy w katalogu ModelState, które poprzednio zostały skopiowane do pliku TempData, zostaną skopiowane ponownie do słownika ModelState.

Powiązane problemy