Browse Source

优化: FromBodyOrDefaultModelBinder

接口:public string ParamTest2([FromBodyOrDefault]string name, [FromBodyOrDefault]int age, [FromBodyOrDefault]ModelSlotSensor sensor)
参数:{
    "name":"1hjad",
    "age":444,
    "sensor":{
        "sensorName": "a1",
        "sensorValue": 10
        }
}
问题:参数sensor获取不到
WX 4 weeks ago
parent
commit
fd3139d772
1 changed files with 15 additions and 1 deletions
  1. 15 1
      Masuit.Tools.AspNetCore/ModelBinder/FromBodyOrDefaultModelBinder.cs

+ 15 - 1
Masuit.Tools.AspNetCore/ModelBinder/FromBodyOrDefaultModelBinder.cs

@@ -85,7 +85,21 @@ public class FromBodyOrDefaultModelBinder(ILogger<FromBodyOrDefaultModelBinder>
                         // 可能是 字典或者实体 类型,尝试将modeltype 当初整个请求参数对象
                         try
                         {
-                            value = json.ToObject(modelType);
+                            if (json.TryGetValue(field, StringComparison.OrdinalIgnoreCase, out var jtoken))
+                            {
+                                if (jtoken.Type is JTokenType.String)
+                                {
+                                    jtoken.Value<string>().TryConvertTo(modelType, out value);
+                                }
+                                else
+                                {
+                                    value = jtoken.ToObject(modelType);
+                                }
+                            }
+                            else
+                            {
+                                value = json.ToObject(modelType);
+                            }
                         }
                         catch (Exception e)
                         {