Use jQuery to append to/remove from a list of hidden fields as options are added and removed, e.g.:
<input type="hidden" name="SelectedOptions" value="EnteredValueGoesHere" />
Then, create a model property to match the name:
public class MyModel
{
public List<string> SelectedOptions { get; set; }
}
Then make sure your controller action has the following signature:
public ActionResult SomeAction(MyModel model)
The default model binder binds form fields to model properties where the name of the property matches the name
of the field so, assuming your hidden fields are correctly populated and maintained by your Javascript, this will bind the hidden fields to the list when the form is submitted.
Then, your select list becomes superficial - just used for the users' convenience, but never actually bound to a model object.