[I solved this myself, see my answer for cause]
I\'m having trouble getting form values for a IList<> argument in a controller method set properl
Solution
After downloading the MVC source I still couldn't see why it wouldn't work, so I presumed it must be something to do with the type I was attempting to bind. Sure enough, the values being member variables, as opposed to properties, was the culprit. This is because the model binder uses reflection to set properties, which it wasn't finding through the call to TypeDescriptor.GetProperties(Type)
.
Updating the value class to this solved it (after hours of hitting head off wall I should add!!):
public class ShoppingBasketItem {
public int ItemID { get; set; }
public int ItemQuantity { get; set; }
}