首页 > 解决方案 > .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)

标签: c#.netwebapi

解决方案


您需要按如下方式更新您的方法定义:

    [Route("{patientId}")]
    [HttpPost]
    public IHttpActionResult Post(int patientId, [FromBody]dynamic signal)

您可以按如下方式访问原始值:

var originalValue = signal.Value.Value;

您可能需要创建自定义 JsonConverter 以将此动态信号转换为 SignalModelEntity 对象。


推荐阅读