Hey i solved this issue by creating custom model binder here is code
public class ControlModelBinder : DefaultModelBinder
{
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
var datalist = controllerContext.HttpContext.Request.Form.GetEnumerator();
SurveyViewModel model = new SurveyViewModel();
model.ControlsList = new List<ControlViewModel>();
List<string> answers = new List<string>();
while (datalist.MoveNext())
{
string currentKey = datalist.Current.ToString();
if (currentKey.Contains("TextBoxViewModel"))
{
TextBoxViewModel textBoxViewModel = new TextBoxViewModel();
textBoxViewModel.Value = controllerContext.HttpContext.Request.Form[currentKey];
model.ControlsList.Add(textBoxViewModel);
}
else if (currentKey.Contains("CheckBoxViewModel"))
{
CheckBoxViewModel checkboxviewmodel = new CheckBoxViewModel();
checkboxviewmodel.SelectedValues = controllerContext.HttpContext.Request.Form[currentKey];
model.ControlsList.Add(checkboxviewmodel);
}
else if (currentKey.Contains("RadioBoxViewModel"))
{
RadioBoxViewModel radioboxviewmodel = new RadioBoxViewModel();
radioboxviewmodel.SelectedValue = controllerContext.HttpContext.Request.Form[currentKey];
model.ControlsList.Add(radioboxviewmodel);
}
else if (currentKey.Contains("RattingBoxViewModel"))
{
RattingBoxViewModel rattingboxviewmodel = new RattingBoxViewModel();
rattingboxviewmodel.Score = controllerContext.HttpContext.Request.Form[currentKey];
model.ControlsList.Add(rattingboxviewmodel);
}
else if (currentKey.Contains("SliderViewModel"))
{
SliderViewModel sliderviewmodel = new SliderViewModel();
sliderviewmodel.Value = controllerContext.HttpContext.Request.Form[currentKey];
model.ControlsList.Add(sliderviewmodel);
}
}
return model;
}
}