I wonder if maybe the controller that is creating this view model in the first place should be the thing that chooses the list of objects. So rather than having an integer property on your view model, you could have a sub property of another type of view model, ie:
public class OuterViewModel
{
public CategoryViewModel Category { get; set; }
}
public class CategoryViewModel
{
public int CategoryId { get; set; }
public IEnumerable<SelectListItem> ListOfThings { get; set; }
}
Then your original view can just have:
@Html.EditorFor(model => model.Category)
With an EditorTemplate for CategoryViewModel that looks like:
@model CategoryViewModel
@Html.DropDownFor(m => m.CategoryId, Model.ListOfThings)
The only thing you have to remember this is if you do any server side business logic validation, add model errors and return to your view you will need to re populate your list of things in your controller post action.