ASP .Net Core 空数组查询参数绑定异常
创始人
2024-11-11 13:31:13
0

当使用ASP .Net Core进行查询参数绑定时,如果有一个空数组作为查询参数,可能会遇到异常。这是因为ASP .Net Core默认情况下会将空数组解析为null,而不是一个空的数组。

要解决这个问题,可以使用以下方法之一:

  1. 使用FromQueryAttribute指定参数绑定方式:
[HttpGet]
public IActionResult MyAction([FromQuery(Name = "myArray[]")] IList myArray)
{
    // your code here
}

在这个示例中,我们使用FromQueryAttribute来指定参数绑定方式,并使用Name属性来指定查询参数的名称。在这种情况下,ASP .Net Core将会正确地将空数组绑定到myArray参数。

  1. 使用自定义ModelBinder: 首先,创建一个继承自IModelBinder接口的自定义ModelBinder类,用于处理空数组的绑定逻辑:
public class EmptyArrayModelBinder : IModelBinder
{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {
        var modelName = bindingContext.ModelName;
        var valueProviderResult = bindingContext.ValueProvider.GetValue(modelName);
        if (valueProviderResult != ValueProviderResult.None)
        {
            bindingContext.ModelState.SetModelValue(modelName, valueProviderResult);
            var value = valueProviderResult.FirstValue;
            if (string.IsNullOrEmpty(value))
            {
                bindingContext.Result = ModelBindingResult.Success(new List());
                return Task.CompletedTask;
            }
        }
        return Task.CompletedTask;
    }
}

然后,在控制器的参数上使用自定义ModelBinder:

[HttpGet]
public IActionResult MyAction([ModelBinder(BinderType = typeof(EmptyArrayModelBinder))] IList myArray)
{
    // your code here
}

在这个示例中,我们使用ModelBinderAttribute来指定使用自定义的ModelBinder进行参数绑定。当查询参数为空时,自定义ModelBinder将会将其绑定为一个空的字符串列表。

通过使用上述方法之一,您可以成功地绑定空数组作为查询参数。

相关内容

热门资讯

刚刚!微乐小程序黑科技,微乐贵... 刚刚!微乐小程序黑科技,微乐贵阳麻将辅助(透视)本来是有辅助神器(哔哩哔哩)能透视中分为三种模型:模...
透视方案!wejoker开挂(... 透视方案!wejoker开挂(AApoker免费)一贯存在有辅助神器(哔哩哔哩)wejoker开挂是...
据玩家消息!微信微乐游戏辅助脚... 据玩家消息!微信微乐游戏辅助脚本,微乐小程序辅助工具哪里下载(透视)好像真的是有辅助方法(哔哩哔哩)...
透视模板!hhpoker透视脚... 透视模板!hhpoker透视脚本下载(WePoKer永久)真是真的有辅助软件(哔哩哔哩)1、下载好h...
今天下午!微乐小程序黑科技免费... 今天下午!微乐小程序黑科技免费,微信小程序微乐安徽辅助苹果(透视)确实存在有辅助工具(哔哩哔哩)1、...
透视策略!aa poker透视... 透视策略!aa poker透视软件(WePoKer app)总是是有辅助软件(哔哩哔哩)1、这是跨平...
做出回应!微信微乐游戏辅助脚本... 做出回应!微信微乐游戏辅助脚本,微乐小程序透视工具(透视)一贯是有辅助方法(哔哩哔哩)1、许多玩家不...
透视课程!德州局怎么透视(HH... 透视课程!德州局怎么透视(HHpoker脚本挂)竟然存在有辅助方法(哔哩哔哩)1、玩家可以在德州局怎...
反观!微乐小程序免费黑科技,手... 反观!微乐小程序免费黑科技,手机微乐小程序破解器(透视)其实存在有辅助app(哔哩哔哩)1、有没有辅...
透视方针!hhpoker免费透... 透视方针!hhpoker免费透视脚本(德普之星私人局)果然有辅助工具(哔哩哔哩)1、用户打开应用后不...