c# - .net转换/绑定前如何获取请求原始参数?
问题描述
我有一个看起来像这样的模型:
public class SignalModelEntity
{
...
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public BooleanValue ValueBoolean { get; set; }
}
和一个 ValueBoolean 类:
public class BooleanValue
{
public bool? Value { get; set; }
public string FormattedValue { get; set; }
}
发送带有如下所示 json 的正文时:
...
"ValueBoolean": {
"Value": 23,
"FormattedValue": ""
}
假设用户向我发送了一个“23”作为值。
绑定/转换为 ValueBoolean 类中的布尔值属性提供了“true”值。
我想知道用户给我发了一个“1”、“真”,所以我可以批准这个值是合法的和真实的。
例如,如果用户给我发了一个“23”,那么这是非法的,并返回一个“badRequest”错误代码。
那么如何获取请求发送的原始参数呢?
我的post方法如下:
[Route("{patientId}")]
[HttpPost]
public IHttpActionResult Post(int patientId, [FromBody]SignalModelEntity signal)
解决方案
您需要按如下方式更新您的方法定义:
[Route("{patientId}")]
[HttpPost]
public IHttpActionResult Post(int patientId, [FromBody]dynamic signal)
您可以按如下方式访问原始值:
var originalValue = signal.Value.Value;
您可能需要创建自定义 JsonConverter 以将此动态信号转换为 SignalModelEntity 对象。