I'm putting this in as a solution so I can format the code and because this did fix it, but I have no idea why. Which isn't very comforting.
The intial view that loads the queue was through an action in my controller called ManageQueues
public ActionResult ManageQueues()
{
var viewModel = new ExternalChangesMasterViewModel();
viewModel.Changes = this.queueService.GetAllUnassigned();
return this.View("ManageQueues", viewModel);
}
The form submitted to different action called SaveQueues, which looked like this:
[HttpPost]
public ActionResult SaveQueues(ExternalChangesMasterViewModel updatedQueues)
{
this.queueService.UpdateQueues(updatedQueues.Changes);
var viewModel = new ExternalChangesMasterViewModel();
viewModel.Changes = this.queueService.GetAllUnassigned();
return this.View("ManageQueues", viewModel);
}
When I changed this Action to the following, the problem went away. However, to be honest I don't see the difference between retreiving the items myself and redirecting to another action which does the same thing, so if someone has an explanation I'd love to hear it:
[HttpPost]
public ActionResult SaveQueues(ExternalChangesMasterViewModel updatedQueues)
{
this.queueService.UpdateQueues(updatedQueues.Changes);
return this.RedirectToAction("ManageQueues");
}