Oh Nooo... It was my mistake :( . I gave Certification List as my partialview model
@model List<SampleApplication.Model.Certification>
But I should use the same model(Main page model) in the partial view also.
@model SampleApp.Models.SampleModel
In the partial view the coding will be like
@for (int i = 0; i < @Model.Certifications.Count; i++)
{
@Html.HiddenFor(m => m.Certifications[i].Id, new { id = "CId" + i.ToString() })
@Html.TextBoxFor(m => m.Certifications[i].CertificationName, new { id = "CName" + i.ToString() })
@Html.TextBoxFor(m => m.Certifications[i].DurationInMonths, new { id = "CDur" + i.ToString() })<br /><br />
}
Now i am getting the updated values in my controller.
Thanks @Chris Pratt for the hint.