Asp.net mvc 3 MVC 3 DropDownList for:无法计算';System.Web.Mvc.SelectList';无法序列化

Asp.net mvc 3 MVC 3 DropDownList for:无法计算';System.Web.Mvc.SelectList';无法序列化,asp.net-mvc-3,serialization,drop-down-menu,Asp.net Mvc 3,Serialization,Drop Down Menu,我不知道如何使用DropDownList进行序列化,并收到错误“Type”System.Web.Mvc.SelectList”无法序列化。“我在向导表单中使用序列化,将用户输入保存到最后,然后发布确认 我在视图中使用以下内容: @using (Html.BeginFormAntiForgeryPost()) { @Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed))

我不知道如何使用DropDownList进行序列化,并收到错误“Type”System.Web.Mvc.SelectList”无法序列化。“我在向导表单中使用序列化,将用户输入保存到最后,然后发布确认

我在视图中使用以下内容:

@using (Html.BeginFormAntiForgeryPost())
{ 
    @Html.Hidden("myData", new MvcSerializer().Serialize(Model, SerializationMode.Signed))
    ...
    @Html.DropDownListFor(m => m.RealEstate, Model.RealEstateList)
    ...
}
在我的ViewModel(MyData)中,我有:

[可序列化]
公共类myData
{
公共int不动产{get;set;}
公共IEnumerable不动产列表{get;set;}
...
公共MyData()
{
var realestatelist=新列表(){
新建SelectListItem{Text=“(请选择)”},
新建SelectListItem{Value=“1”,Text=“Some Text.”,
新建SelectListItem{Value=“2”,Text=“其他一些文本。”}
};
this.RealEstateList=新选择列表(RealEstateList,“值”、“文本”);
}
}

非常感谢您的帮助。

选择列表不支持序列化。尝试在控制器中使用
IEnumerable
IList
List
,然后在视图中创建SelectList

将控制器更改为类似以下内容:

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;
    }
}

SelectList不支持序列化。尝试在控制器中使用
IEnumerable
IList
List
,然后在视图中创建SelectList

将控制器更改为类似以下内容:

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;
    }
}

正如错误所说,
SelectList
类无法序列化。如果需要序列化一组
SelectListItem
对象,则需要使用可序列化的容器,如
列表

您需要将
列表
转换回视图中的
选择列表
,如:

@{
    var bindList = new SelectList(Model.RealEstateList);
}

@Html.DropDownListFor(m => m.RealEstate, bindList)

正如错误所说,
SelectList
类无法序列化。如果需要序列化一组
SelectListItem
对象,则需要使用可序列化的容器,如
列表

您需要将
列表
转换回视图中的
选择列表
,如:

@{
    var bindList = new SelectList(Model.RealEstateList);
}

@Html.DropDownListFor(m => m.RealEstate, bindList)

我使用了你发布的@Html代码,但仍然得到了让我发疯的错误。简单的解决方案是更改我的代码
this.RealEstateList=newselectlist(RealEstateList,“Value”,“Text”)到您的
this.RealEstateList=RealEstateList谢谢!!!我使用了你发布的@Html代码,但仍然得到了让我发疯的错误。简单的解决方案是更改我的代码
this.RealEstateList=newselectlist(RealEstateList,“Value”,“Text”)到您的
this.RealEstateList=RealEstateList谢谢!!!