2017-09-26 7 views
-1

Je suis un débutant C# dev et j'oublie quelque chose. Le code (! ValidateCleared (actionsChecked)) lance et erreur l'opérateur! ne peut pas être appliqué à un vide. Vous ne savez pas comment résoudre ce problème dans cet exemple. J'ai essayé de le garder un bool et d'utiliser une pause, mais les actions ne se sont pas comportées comme prévu. Il a seulement vérifié la seule action.Comment réparer un opérateur à un appel vide dans un bouton?

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    ValidateActionSelected();enter code here 
    ValidateCleared(actionsChecked); 

    if (!ValidateCleared(actionsChecked)) 
    { 
     if (String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX YYY") || String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX ZZZ")) 
     { 
      reqEffectiveDate.ErrorMessage = ""; 
     } 

     if (ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYY || 
      ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYYDenial || 
      ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXzzz) 
     { 
      ValidateXXXYYY(actionsChecked, ddlActionsAndDocuments.Text); 
     } 

     if (ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.WWW || 
      ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYZZZ || 
      ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWWW || 
      ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWaived) 
     { 
      ValidateCertificate(actionsChecked, ddlActionsAndDocuments.Text); 
     } 
    } 
} 

private void ValidateCleared(List<xxCaseEntity> actionsChecked) 
{ 

    //bool error = false; 

    foreach (xxCaseEntity ACTIONyy in actionsChecked) 
    { 
     if (ACTIONyy.XXStatusCode == 40 || ACTIONyy.XXStatusCode == 45) 
     { 
      //error = true; 
      DisplayErrorMessage("FR Action Cannot Apply to " + ACTIONyy.CaseIdentifier); 

      actionsChecked.Remove(ACTIONyy); 
      //break; 
     } 

    } 
    return; 

    //return error; 
} 
+0

Si vous voulez utiliser 'ValidateCleared()' comme si elle retourne '' bool' plutôt que void', essayez de faire revenir ce fait 'bool' plutôt que «vide». Changez le type de retour déclaré et modifiez le code dans 'ValidateCleared()' afin qu'il renvoie true ou false dans chaque chemin de la méthode. –

+0

décommentez votre code dans la méthode ValidateCleared. – Joe

+0

la méthode bool fonctionne bien. Mais pour d'autres fonctionnalités, j'en ai besoin pour retourner void. –

Répondre

-2

Le code fixe est inférieure à

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     ValidateActionSelected();enter code here 
     ValidateCleared(actionsChecked); 

     if (!ValidateCleared(actionsChecked)) 
     { 
      if (String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX YYY") || String.Equals(ddlActionsAndDocuments.SelectedItem.Text.ToString(), "XXX ZZZ")) 
      { 
       reqEffectiveDate.ErrorMessage = ""; 
      } 

      if (ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYY || 
       ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXYYYDenial || 
       ddlActionsAndDocuments.SelectedValue == ActionTypes.XXXzzz) 
      { 
       ValidateXXXYYY(actionsChecked, ddlActionsAndDocuments.Text); 
      } 

      if (ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.WWW || 
       ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYZZZ || 
       ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWWW || 
       ddlActionsAndDocuments.SelectedValue == InsuranceActionTypes.YYYWaived) 
      { 
       ValidateCertificate(actionsChecked, ddlActionsAndDocuments.Text); 
      } 
     } 
    } 

    private bool ValidateCleared(List<xxCaseEntity> actionsChecked) 
    { 
     List<xxCaseEntity> removeItems = new List<xxCaseEntity>(); 
     foreach (xxCaseEntity ACTIONyy in actionsChecked) 
     { 
      if (ACTIONyy.XXStatusCode == 40 || ACTIONyy.XXStatusCode == 45) 
      { 
       DisplayErrorMessage("FR Action Cannot Apply to " + ACTIONyy.CaseIdentifier); 

       //actionsChecked.Remove(ACTIONyy); 
       removeItems.Add(ACTIONyy); 
      } 
     } 
     foreach(xxCaseEntity ACTIONyy in removeItems) 
     { 
      actionsChecked.Remove(ACTIONyy); 
     } 
     return true; 
    } 
+1

Votre version ne sera pas compilée. –