2010-02-11 67 views
1

我有複選框的數組,並試圖對其進行過濾,但在沒有複選框被選中,它拋出一個System.ArgumentNullException複選框過濾問題,當空

public ActionResult UserEdit(string[] UsergroupIDs) 
    { 

     IEnumerable<Usergroup> userUsergroups = 
      UsergroupIDs.Where(x => x != "false") 
         .Select(x => (Usergroup)_ug.GetUsergroups(int.Parse(x)).FirstOrDefault()); 

我應該如何修改這個嗎?

/M

回答

2

將該值設置爲一個空表開始,然後將其更改爲您查詢的結果,如果paremeters不爲空。或者,您可以修改您的視圖以包含具有默認(false)屬性的每個複選框的隱藏字段,以便參數永遠不爲null。後者是Checkbox輔助方法所做的,因此使用它也可以解決您的問題。更好的是,兩者兼而有之。

public ActionResult UserEdit(string[] UsergroupIDs) 
{ 

    IEnumerable<Usergroup> userUsergroups = new List<UserGroup>(); 

    if (UsergroupIDs != null) 
    { 
     userUsergroups = UsergroupIDs.Where(x => x != "false") 
            .Select(x => (Usergroup)_ug.GetUsergroups(int.Parse(x)).FirstOrDefault()); 
    } 

    ... 
} 
+0

是真的,但如果有8個複選框並且全部都是錯誤的,它會失敗嗎? :) – 2010-02-11 13:30:13

+0

否。在這種情況下,您會收到一個空集。空情況是當請求中沒有傳回輸入值時。除非選中該複選框,否則不會提交複選框。 – tvanfosson 2010-02-11 15:49:38