Сериализация и передача модели (и некоторых дополнительных данных) из контроллера в представление (как указано в System.Web.Mvc.SelectList) - это две очень разные вещи.
Сериализация связана с превращением объекта в строку (или двоичный массив) и десериализацией обратно из строки (или двоичного массива) в объект.
Модель, передаваемая назад и вперед в MVC, - это то, что должно отображать представление. Вы, вероятно, ищете одно свойство в этой модели (скажем, countryID), которое будет отображаться в раскрывающемся списке (или HTML <select>
или, в более общем случае, поле со списком). Этот пакет данных обертки (скажем, список стран - пары Id и name) должен передаваться через ViewBag или ViewData.
Список SelectList НЕ должен выполняться во время сеанса, так как его хранение - большая трата памяти. Он просто останется в памяти надолго после того, как пользователь получит свой HttpResponse. Список выбора - это просто список параметров в поле со списком, и поэтому он не сериализуем (хотя его содержимое может быть). Вы должны действительно провести различие между «данными, населяющими поле со списком» (тонкий объект) и «само поле со списком» (толстый объект). В этом примере - между странами (которые являются IEnumerable) и элементом UI. Сериализация элемента пользовательского интерфейса не имеет смысла, и его всегда следует избегать.