ASP.Net MVC 模型绑定一个 [Serializable] class

ASP.Net MVC Model binding a [Serializable] class

我有这个class

[Serializable]
public class MyObject {
    // properties omitted
}

以及这个 WebAPI 控制器方法:

[HttpPost]
[ResponseType(typeof(string))]
public IHttpActionResult SetMyObject(MyObject o) {
    // process object
}

但是它无法对 MyObject 进行建模绑定 class。控制器方法中的对象 o 完全是空的,每个 属性 都是默认的(所以大部分是 null)。

原来这是因为 MyObject 上的 [Serializable] 注释。删除使模型绑定再次工作。

有没有办法保持 [Serializable] 并修复模型绑定?

答案在 Resolver

的设置 IgnoreSerializableAttribute
((DefaultContractResolver)config.Formatters.JsonFormatter
  .SerializerSettings.ContractResolver)
    .IgnoreSerializableAttribute = true;

检查:

ASP.NET Web API and [Serializable] class