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

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

相关内容

热门资讯

在玩家背景下!xpoker辅助... 在玩家背景下!xpoker辅助控制(透视)789大菠萝攻略(确实是有辅助辅助器)-哔哩哔哩789大菠...
透视数据!wepoker插件程... 透视数据!wepoker插件程序激活码(透视)南丰数刀脚本(一贯存在有辅助app)-哔哩哔哩1.we...
据报道!hhpoker为什么一... 据报道!hhpoker为什么一直输(透视)传送屋激k怎么开挂(本来存在有辅助软件)-哔哩哔哩一、传送...
透视中牌率!德普之星透视辅助软... 透视中牌率!德普之星透视辅助软件(透视)微乐广西小程序开挂(果然真的有辅助插件)-哔哩哔哩1、微乐广...
透视安卓版!aapoker透视... 透视安卓版!aapoker透视方法(透视)广西来趣app有挂吗(果然真的是有辅助app)-哔哩哔哩广...
透视代打!wpk私人局辅助是真... 透视代打!wpk私人局辅助是真的吗(透视)传送屋软件下载辅助(一直是有辅助app)-哔哩哔哩1、透视...
据公告内容!wepoker辅助... 据公告内容!wepoker辅助器是真的吗(透视)边锋斗地主辅助微信(本来真的有辅助安装)-哔哩哔哩1...
事发当天!德普之星辅助工具如何... 事发当天!德普之星辅助工具如何设置(透视)随意玩正版透视(切实是真的辅助平台)-哔哩哔哩1、下载好随...
目前!德普之星透视辅助软件(透... 目前!德普之星透视辅助软件(透视)闲来辅助工具(总是存在有辅助软件)-哔哩哔哩1、上手简单,内置详细...
透视总结!wepokerplu... 透视总结!wepokerplus透视脚本免费(透视)九酷众游辅助(好像真的是有辅助工具)-哔哩哔哩1...