无法序列化List <SelectListItem>

Sto*_*r01 5 c# asp.net-mvc-3

我正在将现有的MVC3应用程序从InProc移动到ASP.Net会话状态服务.其中一个模型对象具有以下属性:

public List<System.Web.Mvc.SelectListItem> StateCodes { get; set; }
Run Code Online (Sandbox Code Playgroud)

并且它抛出了这个错误

无法序列化会话状态.在"StateServer"和"SQLServer"模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象.如果自定义会话状态存储在"自定义"模式下完成类似的序列化,则适用相同的限制.

有没有办法List<SelectListItem>进行序列化?

bjo*_*ncs 5

尝试在Razor代码中创建选择列表项,而不是使用SelectList.让模型改为具有基于的基础数据的属性SelectList.您也可以尝试将其SelectList置于ViewBag或者ViewData,也可以解决问题.

SelectList在视图模型中存储被认为是不好的做法.

  • 为什么这是不好的做法?因为视图模型不应该有关于视图组件的信息? (3认同)