When returning the data to the your View you can use razor syntax on the view to generate the specific control you want
YourView.cshtml
@model YourViewModel
...
...
...
@if(Model.YourControlId == 1){
@Html.TextboxFor(x=>x.YourPropertyBinding)
}
else if(Model.YourControlId == 2){
@Html.DropDownListFor(x=> x.YourPropertyBinding, listOfData)
}
else if(Model.YourControlId == 3){
.....
}