c# - 从查询参数中获取动态对象
问题描述
有没有办法从 ASP.NET Core WebAPI 控制器操作中的查询参数中获取动态对象?
当我尝试以下操作时,我得到queries
一个空对象
public object Action([FromQuery] dynamic queries)
{
...
}
解决方案
这是自定义模型绑定器以将查询字符串绑定到 Dictionary 类型的解决方法:
动态模型绑定器
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;
}
推荐阅读
- python - 使用 Pandas 比较每 2 行并显示不同的
- amazon-web-services - 如何在 Windows Server 上的 Elastic Beanstalk 部署中正确使用 AWS Secrets Manager
- python - 如何找到两个不同维度图像python的RMSE?1920 x 1080 x 3 与 4361、7374、3
- php - Akeneo pim 5.0 安装数据库报错
- html - igu=1 参数的原始来源,用于在 iframe 中显示 google
- ios - ARKit + SceneKit:将重建场景用于物理?
- php - 如何使用 Laravel 外观
- php - Symfony @ParamConverter 仅适用于活动行
- python - 在 python 循环中测量矩阵距离
- powershell - 您不能使用 excel 在 powershell 中调用空值表达式的方法