Let's say I have an edit view that is strongly-typed to a table called "MyData". The view has multiple tabs, each with several different fields from the table. For performance, the data is only loaded when the tab is viewed, so if you only edit a field on tab 1 and submit the form, the data for tab 2 will not be loaded.
The problem I'm running into is on the submit. I'm doing the typical routine of finding the existing record in the database and updating the passed values:
<AcceptVerbs(HttpVerbs.Post)> _
Function Edit(ByVal data As MyData) As ActionResult
Using dc = New MyDataContext
Dim orig = dc.MyDatas.Single(Function(x) x.id = data.id)
orig.name = data.name
orig.desc = data.desc
...
SubmitChanges()
End Using
Return View(orig)
End Function
However, this method doesn't know which tabs were loaded, so if the tab with "desc" on it is not loaded, this method thinks the user blanked out the "desc" field, and sends NULL to the database.
How can I construct this so that only loaded fields are sent to the database, and unloaded fields are ignored?