My MVC page is used for both Insert and Update. So far it works fine for displaying the data but when the submit button is clicked, it errors:
 "No parameterless constructor defined for this object."
 MissingMethodException: No parameterless constructor defined for this object.]
It will hit the paramaterless constructor, it is commented out right now. There are 50 extra fields on the viwemodel that are used for display only and not needed in insert/update. There are less form fields on the form than in the viewmodel.
Is there working code example that handle this situation? I have seen the accepted answer here that may work, but I need a complete working example since I'm new to do this:
ASP.NET MVC - Proper usage of View Model and Command pattern
    <form action="/incident/SaveIncident" method="post">  
       <div>
                <input class="btn btn-primary" type="submit" value="SubmitSave" />
               <br />
                 <select id="drpSite">
                        <option value="0">Pick a site...</option>
                        @foreach (var site in Model.Sites)
                        {
                            <option value="@site.SiteId">
                                @site.SiteName
                            </option>
                        }
                    </select>
                   <br />
                   upsert:@Html.TextBoxFor(model => model.objIncidentUpsert.UpsertBemsId, new { @class = "form-control" })
                  <br /> 
                  viewBOIncDesc1: @Html.TextBoxFor(model => Model.objIncident.IncidentModel.IncidentDescription1, new { @class = "form-control" })) 
       </div>
    </form>
IncidentViewModel.cs
    public class IncidentViewModel
{
    public int IncidentId { get; set; }
    public IncidentModelBO objIncident  { get; set; }
    public IncidentModelUpsert objIncidentUpsert { get; set; }
    public IncidentViewModel(int incidentId)
    {
        if (incidentId == 0)
        {
            objIncident = new IncidentModelBO();
        }
        else
        {
            IncidentId = incidentId;
            objIncident = IncidentModelBO.Get(incidentId);
        }
    }
     public IEnumerable<SiteModel> Sites {get; set;}
}
IncidentController.cs:
    //[HttpPost]
    //[ActionName("SaveIncident")]
    //public ActionResult SaveIncident()
    //{
    //    return new HttpStatusCodeResult(400, "Problem with inputxxx ");
    //}
    [HttpPost]
    [ActionName("SaveIncident")]
    public ActionResult SaveIncident(IncidentViewModel objIncidentBO)
    {
        string loggedinbemsid = System.Web.HttpContext.Current.Session[Utility.SessionKeyIndex.BEMSID.ToString()].ToString();
        try
        {
            objIncidentBO.objIncident.Create(loggedinbemsid, null);
            IncidentViewModel vwIncidentData = new IncidentViewModel(objIncidentBO.objIncident.IncidentModel.IncidentId);
            return View("index", vwIncidentData);
        }
        catch (Exception e)
        {
            return new HttpStatusCodeResult(400, "Problem with input: " + e.Message);
        }
 
     
     
    