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; }
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 statementx = condition ? value1 : value2
called conditional operator. returnsvalue1
ifcondition
true, ,value2
otherwise. int?
nullable integer, can either have integer value or null.
Comments
Post a Comment