C# 从查询参数中获取动态对象
有没有办法从ASP.NET核心WebAPI控制器操作中的查询参数获取动态对象 当我尝试以下操作时,会得到C# 从查询参数中获取动态对象,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,有没有办法从ASP.NET核心WebAPI控制器操作中的查询参数获取动态对象 当我尝试以下操作时,会得到查询作为空对象 public object Action([FromQuery] dynamic queries) { ... } 以下是自定义模型绑定器以将查询字符串绑定到字典类型的解决方法: 动态模型指示器 结果 您如何调用端点?这里也提出了一个类似的问题:看起来像是指环王法(一种统治所有指环王的方法)。FWIW,即使你能做到这一点,你可能也不应该。 public class D
查询
作为空对象
public object Action([FromQuery] dynamic queries)
{
...
}
以下是自定义模型绑定器以将查询字符串绑定到字典类型的解决方法: 动态模型指示器 结果
您如何调用端点?这里也提出了一个类似的问题:看起来像是指环王法(一种统治所有指环王的方法)。FWIW,即使你能做到这一点,你可能也不应该。
public class DynamicModelBinder:IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null)
throw new ArgumentNullException(nameof(bindingContext));
var result = new Dictionary<string, dynamic> { };
var query = bindingContext.HttpContext.Request.Query;
if (query == null)
{
bindingContext.ModelState.AddModelError("QueryString", "The data is null");
return Task.CompletedTask;
}
foreach (var k in query.Keys)
{
StringValues v = string.Empty;
var flag = query.TryGetValue(k, out v);
if (flag)
{
if (v.Count > 1)
{
result.Add(k, v);
}
else {
result.Add(k, v[0]);
}
}
}
bindingContext.Result = ModelBindingResult.Success(result);
return Task.CompletedTask;
}
}
public object Action([ModelBinder(BinderType = typeof(DynamicModelBinder))]dynamic queries)
{
return queries;
}