I have a table with several rows of data that I need to return to the controller. In my view, I initially load the table by selection of a time period and clicking a button. The table loads all my relevant records but one of my table cells contains a dropdown list. So I should be able make a selection in the dropdown click "update" and my controller saves the changes.
So everything works until I try and save. The model that is sent to the controller is completely null. The list property I have tied to the table cells returns to the controller null.
@ModelType SuperViewModel
//We need this a view model in order to store a List of the models in the table
@Using (Html.BeginForm())
@For Each i in Model.CompleteList
Dim currentItem = i //MVC auto-generated extra declarations. Seems redundant to me but it works.
@<table>
<tr>
<td>@Html.DisplayFor(function(Model)currentItem.Name)</td>
<td>@Html.DisplayFor(function(Model)currentItem.SampleTime)</td>
<td>@Html.DropDownListFor(function(Model)currentItem.WorkTime, ViewBag.WorkTimeList)</td>
</tr>
Next
</table>
<input name="submit" type="submit" value="Update"/>
End Using
//Controller
<HttpPost()>
function Save(vmodel as SuperViewModel, submit as String) as ActionResult //NOTE: submit parameter is used because we have two submit buttons but its not relevant here
if submit = "Update"
db.Entry(vmodel.CompleteList).State = EntityState.Modified//Here the exception is throw because our list is null at this point even tho its tied to the model in the view.
db.SaveChanges()
end if
End Function
NOTE: This is written in VB.NET but C# help is welcome. I am familiar with both languages in MVC.
Next
missing beforeEnd Using
to close theFor Each
? Also, can you add some of the markup rendered by the view? – Brian Cauthon Apr 23 '12 at 23:33next
is there – ExceptionLimeCat Apr 24 '12 at 1:28