I have what appears (to me anyway) to be a strange problem...
I created a simple editor template for a SelectListItem (SelectListItem.cshtml in the ~/Views/Shared/Ed
If you're using EditorFor, I don't think the looping solution will work. It seems that using the IEnumerable template is the only way for the form inputs to be named correctly; if you just call EditorFor repeatedly, then your form s will have the same ID, rather than indexed IDs.
I experienced this issue and the solution was to emit the enumerable template and not loop through the list items.
Sorry to make this an answer not a comment -- don't have commenting rights.