2010-01-28 40 views
5

我想創造我的控制器解決方法用來處理在ASP.NET MVC V1的錯誤。如果您發佈:在沒有選擇的(http://forums.asp.net/p/1384796/2940954.aspx)列表框時發生錯誤。如果關鍵不在的ModelState存在,我怎麼能增加嗎? aspnetmvc1

快速的解釋: 我有接受來自文本框,兩個日期,並從列表框中的一個或多個選擇的報告。一切工作除了驗證,如果列表框沒有被選中。

當表單發送和到達我的控制器,該模型包含了所需的所有物品。但是,ModelState不包含列表框的鍵/值。要解決,我希望這樣的事情會做的伎倆:

if (!ModelState.ContainsKey("TurnTimeReportModel.Criteria.SelectedQueuesList") || ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"] == null) { 
      ModelState.Keys.Add("TurnTimeReportModel.Criteria.SelectedQueuesList"); 
      ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"].Equals(new List<string>()); 
     } 

Unfortuantely,這將引發以下異常,當我嘗試添加鍵值: System.NotSupportedException:變異從字典派生的鍵集合不允許。

任何想法?

在此先感謝!

回答

2

我結束了這方面做的伎倆下面去:

  if (ModelState.ContainsKey("TurnTimeReportModel.Criteria.SelectedQueuesList") && ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"] == null) { 
      ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"].Value = new ValueProviderResult("", "", CultureInfo.CurrentUICulture); 
     } else if (!ModelState.ContainsKey("TurnTimeReportModel.Criteria.SelectedQueuesList")) { 
      ModelState.Add("TurnTimeReportModel.Criteria.SelectedQueuesList", new ModelState{Value = new ValueProviderResult("","",CultureInfo.CurrentUICulture)}); 
     } 
4

直接使用ModelState.Add方法:

ModelState.Add("TurnTimeReportModel.Criteria.SelectedQueuesList", 
       new ModelState{ AttemptedValue = new List<string>() }) 
+0

謝謝你的回覆!我會試試看,看看它的表現如何。 – BueKoW 2010-01-28 20:39:20

+0

感謝您的好評!這也幫助了我。在單元測試中面對一個模擬控制器的這個問題,並且這樣做了! – Rob 2010-08-23 08:40:07

相關問題