我有以下动作签名
[ValidateInput(false)]
public HttpResponseMessage PostParam(Param param)
参数看起来像这样:
public class Param {
public int Id { get; set;}
public string Name { get; set; }
public string Choices { get; set; }
}
这是障碍 - 电线上的东西是这样的
{
Id: 2,
Name: "blah",
Choices: [
{
foo: "bar"
},
{
blah: "blo"
something: 123
}
]
}
我不希望“选择”反序列化 - 我希望它存储为字符串(是的,我了解安全隐患)。可以理解的是,我收到一个错误,因为默认活页夹不知道这一点。
现在使用 Asp Mvc 创建一个特定的 ModelBinder 将相当简单。ID
- 继承 DefaultModelBinder
- 用我自己的重写属性反序列化
- 在我的
Application_Start
使用中设置活页夹Binders.Add
似乎对于 Web Api,这是一个不同的过程 - System.Web.DefaultModelBinder 没有任何要覆盖的东西,我无法使用Binders.Add
. 我试过环顾四周,但找不到太多关于如何实际做我想做的事。这更加复杂,因为显然 ModelBinders api 比 Beta 和 RTM 发生了相当大的变化,所以那里有很多过时的信息。