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将会将其绑定为一个空的字符串列表。

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

相关内容

热门资讯

德州之星辅助器使用教程!德州A... 德州之星辅助器使用教程!德州AI辅助神器,(德州)一贯存在有挂,微扑克教程(黑科技攻略);1、进入游...
aapoker外挂实测结果!a... aapoker外挂实测结果!aapoker辅助工具下载,(aapokER)好像是真的有挂,分享教程(...
微扑克辅助算牌器!微扑克代打是... 微扑克辅助算牌器!微扑克代打是真的吗,(微扑克)都是有挂,透明挂教程(黑科技透视)微扑克代打是真的吗...
微扑克辅助手机!微扑克ai代打... 微扑克辅助手机!微扑克ai代打,(微扑克)总是有挂,必赢方法(黑科技助手)1、让任何用户在无需微扑克...
wpk辅助真的假的!wpk辅助... wpk辅助真的假的!wpk辅助,(WPk)切实存在有挂,AA德州教程(黑科技脚本);1、wpk辅助真...
德州线上外挂!德州ai机器人,... 德州线上外挂!德州ai机器人,(德州ai)一直真的有挂,详细教程(黑科技总结);1)德州线上外挂辅助...
微扑克的辅助工具苹果!微扑克a... 微扑克的辅助工具苹果!微扑克ai分析,(微扑克)其实真的有挂,教你教程(黑科技辅助器)小薇(透视辅助...
wepokeai插件!wepo... wepokeai插件!wepoke智能ai什么意思,(wepOKE)一贯是真的有挂,必备教程(黑科技...
德扑之星ai代打可靠!德扑之星... 德扑之星ai代打可靠!德扑之星用ai会封号嘛,(德扑)本来是真的有挂,wpk教程(黑科技攻略)德扑之...
德扑之星安卓模拟器!德扑之星a... 德扑之星安卓模拟器!德扑之星ai代打怎么弄,(德扑)真是真的是有挂,微扑克教程(黑科技黑科技)1、德...