2014-04-03 47 views
0

在我的控制器中,我正在獲取一些數據來填充視圖中的組合框。當數據發佈時,我檢查MVC 4驗證NullReferenceException當返回查看空模型數據

ModelState.IsValid 

屬性,如果沒有,我需要返回視圖來顯示驗證消息錯誤。但是,該模型只包含發佈的數據,另一個需要加載組合框爲空,並引發NullReferenceException。哪種解決方法是正確的?

public ActionResult Index(){ 
     CourtBussines courtBussines = new CourtBussines(); 
     IList<Court> courts = new List<Court>(); 
     courts.AddRange(courtBussines.GetCourtsOpenedList()); 
     CourtSelectionModel courtSelectionModel = new CourtSelectionModel{Courts = courts, SelectedCourtId = -1}; 
     return View(courtSelectionModel); 
    } 

    [Authorize] 
    [HttpPost] 
    public ActionResult Index(CourtSelectionModel courtSelectionModel){ 
     if (!ModelState.IsValid){ 
      return View(courtSelectionModel); //Here, the data to load combobox is null and fails. 
     } 
     return RedirectToAction("Horarios", courtSelectionModel); 
    } 
+0

您必須在每次調用視圖時重新加載組合框的數據!你應該發佈你的觀點和例外! – Fals

+1

@Oscar:在View的加載事件中,組合框需要它的項目。所以,只要你加載頁面,你必須提供組合框項目來查看。 –

回答

2

您將不得不重新初始化法院列表,因爲整個列表未發佈。

嘗試類似。

+0

它雖然我,但在我看來非常粗魯,不得不重新初始化所有這些數據,並詢問是否有更好的模式來解決這個問題。 – Oscar

+1

不幸的是,我沒有更好的方法,因爲POST只發送組合框的值,而不是用於填充組合框的所有項目。 – mituw16

+0

將數據保存在緩存中以避免數據庫命中是一個好主意? – Oscar