2010-02-11 6 views
1

J'ai un tableau de cases à cocher, et d'essayer de les filtrer, mais quand aucune case est cochée, il renvoie une System.ArgumentNullExceptionCheckbox problème de filtre lorsque null

public ActionResult UserEdit(string[] UsergroupIDs) 
    { 

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

Comment dois-je modifier celui-ci?

/M

Répondre

2

Définissez la valeur à une liste vide d'abord, puis changer pour les résultats de votre requête si les paremeters n'est pas nul. Ou, vous pouvez modifier votre vue pour inclure des champs cachés pour chaque case à cocher qui a la propriété par défaut (false) afin que ce paramètre ne soit jamais nul. Ce dernier est ce que la méthode d'aide de Checkbox utilise pour résoudre le problème. Encore mieux, faites les deux.

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

vrai, mais il échouera s'il y a 8 cases à cocher et toutes sont fausses non? :) –

+0

Non. Dans ce cas, vous obtenez une collection vide. Le cas null est lorsqu'aucune valeur d'entrée n'est renvoyée dans la requête. Une case à cocher n'est pas envoyée sauf si elle est cochée. – tvanfosson

Questions connexes