【发布时间】:2017-02-07 16:50:57
【问题描述】:
编辑:删除了问题的第一部分,因为它具有误导性且不完全相关。
由于各种原因,我已经到了可以真正使用将我的一些 Post body 参数装箱到他们的模型中的地步。
我开始这个只是接受默认的模型绑定器就可以工作™,它确实如此,但不适用于 ints(?!)。示例:
public class IntBox
{
public int Value;
public IntBox(int value)
{
Value = value;
}
public static implicit operator IntBox(int value)
{
return new IntBox(value);
}
}
public class StringBox
{
public string Value;
public StringBox(string value)
{
Value = value;
}
public static implicit operator StringBox(string value)
{
return new StringBox(value);
}
}
public class BoolBox
{
public bool Value;
public BoolBox(bool value)
{
Value = value;
}
public static implicit operator BoolBox(bool value)
{
return new BoolBox(value);
}
}
public class NeedQuery : StateFullQuery
{
public StringBox[] TestStrings { get; set; } //"TestStrings":["a","b"]
public IntBox[] TestInts { get; set; } //"TestInts":[1,2,3,4]
public BoolBox[] TestBools { get; set; } //"TestBools":[true,false]
}
//Inside Controller:
public string Post([FromBody]NeedQuery query)
{
//At this point query.TestStrings contains two StringBoxes with the expected values. As does query.TestBools
// However, query.TestInts is empty.
}
我错过了什么?! Ints 有什么特别之处以至于它们不能被 Modelbinder 隐式转换?我该如何解决这个问题?
非常感谢您对此的帮助;如果没有大的重写,我会被阻止,直到我弄明白为止。
注意:当我说我需要对 int 值进行装箱时,这是为了帖子而对问题的简化,它比简单地装箱值要复杂一些。
【问题讨论】:
标签: c# json asp.net-web-api2 model-binding implicit-conversion