我正在把头发拉出来。
我正在尝试实现一个多步骤向导,并且我Html.Serialize
在 MVC3 Futures 中使用了 html 助手。这很好用,除了我的模型中的一个属性是SelectList
. 我不希望这个属性序列化(无论如何尝试时它都会爆炸)。
我不能使用[NonSerialized]
,因为它只适用于字段,而不是属性。我什至尝试了其他一些正常的方法,例如[XmlIgnore]
(我认为无论如何都行不通)。
任何人都可以建议一个在使用时会忽略模型中属性的属性Html.Serialize
吗?
编辑:
我尝试序列化时遇到的错误是 InvalidDataContractException。有这样的消息:
无法序列化类型“System.Web.Mvc.SelectList”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。
但是,如果我这样做,那么我必须将所有成员标记为[DataMember]
仅排除 1 个属性,这似乎有点愚蠢。
更新:
一个简单的例子是这段代码(确保添加对 System.Runtime.Serialization.dll 的引用):
测试.cs
[Serializable]
public class Test
{
public int ID { get; set; }
[IgnoreDataMember]
public SelectList TestList { get; set; }
}
家庭控制器.cs
public ActionResult About()
{
return View(new Test() { ID = 0, TestList = new SelectList(new [] {""})});
}
主页/关于.cshtml
@using Microsoft.Web.Mvc
@model MvcApplication3.Models.Test
@Html.Serialize("Test", Model)
这会生成 InvalidDataContractException