asp.net-mvc-3 - MVC 3 下拉列表: Cannot figure out 'System.Web.Mvc.SelectList' cannot be serialized

标签 asp.net-mvc-3 serialization drop-down-menu

我不知道如何使用 DropDownList 进行序列化,并收到错误“无法序列化类型'System.Web.Mvc.SelectList'。”我正在以向导形式使用序列化将用户输入保留到最后,然后发布确认。

我在 View 中使用以下内容:

@using (Html.BeginFormAntiForgeryPost())
{ 
    @Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed))
    ...
    @Html.DropDownListFor(m => m.RealEstate, Model.RealEstateList)
    ...
}

在我的 ViewModel (MyData) 中,我有:

[Serializable]
public class myData
{
public int RealEstate { get; set; }
public IEnumerable<SelectListItem> RealEstateList { get; set; }
...
public MyData()
    {
        var realestatelist = new List<SelectListItem>() {
            new SelectListItem { Text = "(Please select)" },
            new SelectListItem { Value = "1", Text="Some text." },                
            new SelectListItem { Value = "2", Text="Some other text." }
            };
        this.RealEstateList = new SelectList(realestatelist, "Value", "Text");
    }
}

非常感谢任何帮助。

最佳答案

SelectList 不支持序列化。尝试使用IEnumerable<SelectedListItem> , IList<SelectListItem>List<SelectedListItem>在您的 Controller 中,然后在 View 中创建 SelectList。

更改与此类似的 Controller :

public MyData()
    {
        var realestatelist = new List<SelectListItem>() {
            new SelectListItem { Text = "(Please select)" },
            new SelectListItem { Value = "1", Text="Some text." },                
            new SelectListItem { Value = "2", Text="Some other text." }
            };
        this.RealEstateList = realestatelist;
    }
}

看到你的RealEstateList模型中已经是IEnumerable<SelectListItem>您可以在 View 中创建 SelectList,然后指定值和文本,而无需转换模型属性,如下所示:

@Html.DropDownListFor(m => m.RealEstate, new SelectList(Model.RealEstateList, "Value", "Text"))

关于asp.net-mvc-3 - MVC 3 下拉列表: Cannot figure out 'System.Web.Mvc.SelectList' cannot be serialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9214918/

相关文章:

html - 在图片上堆叠下拉菜单

jquery - 使用 jquery 从 Kendo 下拉列表中删除特定下拉选项

Javascript/jquery 适用于除 firefox 之外的所有浏览器

asp.net-mvc-3 - 基于数据库条目的动态路由

asp.net - Session_Start 在默认 ASP.NET MVC3 项目上多次触发

php - 在mysql中插入序列化数组

java 。如果文件存在则尝试反序列化。否则就不要

c# - XML 序列化最后生成随机字符串? C#

css - 部分移动导航菜单项隐藏在其他div后面

c# - Ajax 调用在第二次尝试后返回未定义的数据