c# - Avoiding too many if else, else if statement for multiple(9) conditions -


i have got 9 condition if else statement , thinking there other alternative solution make code clean , short. 9 condition perform different calculations asp.net mvc view . have included code , image shows view of conditions, hope make sense , looking better , robust solution scenario.. thanks

//condition 1 //when no selection made 2 dropdownlist (garages & helmets) if (formvalues["helmets"] == "" && formvalues["garages"] == "") {     viewbag.hidehelmet = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.hidegarages = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.selectedhelmets = 1;//     viewbag.selectedgarages = 1;//     viewbag.totalhelmets = 1;     viewbag.totalgarages = 1;     viewbag.totalamount = 1;     viewbag.totalamount =  trackeventcost.unitcost; } //condition 2 //when garages selected dropdown & helmets not selected else if ((formvalues["helmets"] == "") && (convert.toint32(formvalues["garages"]) > 0)) {     viewbag.hidehelmet = 0;//for jquery, value passed jquery script decides field hide/show     viewbag.hidegarages = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.selectedhelmets = 1;     viewbag.selectedgarages = convert.toint32(formvalues["garages"]);     viewbag.totalhelmets = 1;     viewbag.totalgarages = convert.toint32(formvalues["garages"]) * getgarages.unitcost;     viewbag.totalamount = viewbag.totalgarages + trackeventcost.unitcost; } //condition 3 //when helmets selected dropdown & garages not selected else if ((formvalues["garages"] == "") && (convert.toint32(formvalues["helmets"]) > 0)) {     viewbag.hidehelmet = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.hidegarages = 0;//for jquery, value passed jquery script decides field hide/show     viewbag.selectedgarages = 1;     viewbag.selectedhelmets = convert.toint32(formvalues["helmets"]);     viewbag.totalgarages = 1;     viewbag.totalhelmets = convert.toint32(formvalues["helmets"]) * getgarages.unitcost;     viewbag.totalamount = viewbag.totalhelmets + trackeventcost.unitcost; } //condition 4 //when garages not selected dropdown & helmets dropdownlist hidden on view due unavailablity of helmets event else if (formvalues["garages"] == "" && (formvalues["helmets"] == null)) {     viewbag.hidehelmet = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.hidegarages = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.totalamount = trackeventcost.unitcost; } //condition 5 //when helmets not selected dropdown & garages dropdownlist hidden on view due unavailablity of garages event else if ((formvalues["garages"] == null) && (formvalues["helmets"] == "")) {     viewbag.hidehelmet = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.hidegarages = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.selectedhelmets = 1;     viewbag.totalamount = trackeventcost.unitcost; } //condition 6 //when both helmets , garages dropdown list not displayed on view not present in database else if (formvalues["helmets"] == null && formvalues["garages"] == null) {     viewbag.selectedhelmets = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.selectedgarages = 1;//for jquery, value passed jquery script decides field hide/show     viewbag.totalhelmets = 1;     viewbag.totalgarages = 1;     viewbag.hidehelmet = 1;     viewbag.hidegarages = 1;     viewbag.totalamount = trackeventcost.unitcost; } //condition 7 //when garages selected dropdown & helmets dropdownlist hidden on view due unavailablity of helmets event else if (formvalues["helmets"] == null && convert.toint32(formvalues["garages"]) > 0) {     viewbag.hidehelmet = 0; //for jquery , value passed jquery script decides field hide/show     viewbag.hidegarages = 1; //for jquery , value passed jquery script decides field hide/show     viewbag.selectedgarages = convert.toint32(formvalues["garages"]);     viewbag.totalgarages = convert.toint32(formvalues["garages"]) * getgarages.unitcost;     viewbag.totalamount = viewbag.totalgarages + trackeventcost.unitcost; } //condition 8 //when helmets selected dropdown & garages dropdownlist hidden on view due unavailablity of garages event else if (convert.toint32(formvalues["helmets"]) > 0 && formvalues["garages"] == null) {     viewbag.hidehelmet = 1; //for jquery , value passed jquery script decides field hide/show     viewbag.hidegarages = 0; //for jquery , value passed jquery script decides field hide/show     viewbag.totalhelmets = convert.toint32(formvalues["helmets"]) * gethelmets.unitcost;     viewbag.totalamount = viewbag.totalhelmets + trackeventcost.unitcost; } //condition 9 //when garages , helmet both dropdown selected  else {     viewbag.hidehelmet = 0;//for jquery , value passed jquery script decides field hide/show     viewbag.hidegarages = 0;//for jquery , value passed jquery script decides field hide/show     viewbag.selectedhelmets = convert.toint32(formvalues["helmets"]);     viewbag.selectedgarages = convert.toint32(formvalues["garages"]);     viewbag.totalhelmets = convert.toint32(formvalues["helmets"]) * gethelmets.unitcost;     viewbag.totalgarages = convert.toint32(formvalues["garages"]) * getgarages.unitcost;     viewbag.totalamount = viewbag.totalhelmets + viewbag.totalgarages + trackeventcost.unitcost; } 

some conditions

first, move extraction of form value beginning of method, e.g:

int? helmets = formvalues["helmets"] == null ?   null : convert.toint32(formvalues["helmets"]; int? garages = formvalues["garages"] == null ?   null : convert.toint32(formvalues["garages"]; 

then can set properties without ifs/else ifs, e.g:

viewbag.hidehelmet = helmets; // or someotherproperty = helmets == null ? ... : ... 

update (regarding comment/question):

  • the ?: operator in statement x = condition ? value1 : value2 called conditional operator. returns value1 if condition true, , value2 otherwise.
  • int? nullable integer, can either have integer value or null.

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -