Submitting Form in MVC 4 model is null in controller post method

前端 未结 3 1990
粉色の甜心
粉色の甜心 2021-01-02 09:42

So my problem right now is that I cant get my model into my controller when I submit this following form. I am trying to have the items from the BillingCodes (which is a lis

3条回答
  •  长发绾君心
    2021-01-02 10:20

    You are doing a foreach on the views, so the input elements should have the values posted somewhere like to this : name="BillingCodes[0].EnterTimeHours", name="BillingCodes[0].EnterTimeMinutes" you can inspect in the network tab the request on Chrome Developer Tools (CTRL+SHIFT+C) or just viewing the source. If this is the case, you are submitting multiple BillingCodeObj objects. You must have a controller that receive that.

    Take a look at the source code as this can greatly help you understand what's going on behind the scenes.

    Try this on your controller:

    [HttpPost]
    public void SubmitTimesheet(IEnumerable billingCodes){
    }
    

    You can also (for debugging purposes) do

    public void SubmitTimesheet(FormCollection form){}
    

    and inspect the form how is populated on debug.

    after comments and more code provided change your view to :

    @using (Html.BeginForm("SubmitTimesheet", "Timesheet", FormMethod.Post))
    {
        @Html.EditorFor(m=>m.BillingCodes)
    }
    

    create a new cshtml in EditorTemplates/BillingCodeObj.cshtml :

    @model BillingCodeObj
    
    @Model.Name
    @Model.TotalHours

    Enter Time:
    @Html.DropDownListFor(model => model.EnterTimeHours, new SelectList(new[] { new { Value = "0", Text = "0" }, new { Value = "1", Text = "1" }, new { Value = "2", Text = "2" }, new { Value = "3", Text = "3" }, new { Value = "4", Text = "4" }, new { Value = "5", Text = "5" }, new { Value = "6", Text = "6" }, new { Value = "7", Text = "7" }, new { Value = "8", Text = "8" }, new { Value = "9", Text = "9" }, new { Value = "10", Text = "10" }, new { Value = "11", Text = "11" }, new { Value = "12", Text = "12" }, }, "Value", "Text")) : @Html.DropDownListFor(model => model.EnterTimeMinutes, new SelectList(new[] { new { Value = "0", Text = "00" }, new { Value = "15", Text = "15" }, new { Value = "30", Text = "30" }, new { Value = "45", Text = "45" }, }, "Value", "Text"))
    Enter Memo:
    @Html.TextAreaFor(model => model.Comment)

提交回复
热议问题