首页 > 其他分享 >如何在 .Net 7 中将 Query 绑定到数组

如何在 .Net 7 中将 Query 绑定到数组

时间:2022-12-21 09:11:20浏览次数:45  
标签:string 绑定 MyDate id Parse Query Net public

在 .Net 7 中,我们可以通过绑定数组的方式来接收来自查询字符串的参数。这样就不需要再使用逗号分隔的字符串来获取参数了。

代码演示

假设我们需要从 query 上接受多个 id 并返回查询的结果。例如: id=1&id=2

在 .Net 7 中,我们可以这样实现:

public ActionResult GetResults([FromQuery]int[] ids)
{
    // 使用 ids 数组查询结果
}

这样就可以直接将 id=1&id=2 这样的查询字符串绑定到 ids 数组上。

借助 IParsable 绑定更复杂的类型

如果我们需要绑定的类型比较复杂,例如:

public ActionResult GetResults([FromQuery]MyDate[] dates)
{
    // 使用 dates 数组查询结果
}

我们可以通过实现 IParsable<T> 接口来实现自定义的绑定。

public class MyDate : IParsable<MyDate>
{
    public int Month { get; set; }
    public int Day { get; set; }

    public void Parse(string input)
    {
        var parts = input.Split('-');
        Month = int.Parse(parts[0]);
        Day = int.Parse(parts[1]);
    }

    public static MyDate Parse(string s, IFormatProvider? provider)
    {
        var date = new MyDate();
        date.Parse(s);
        return date;
    }

    public static bool TryParse(string? s, IFormatProvider? provider, out MyDate result)
    {
        try
        {
            result = Parse(s, provider);
            return true;
        }
        catch
        {
            result = default;
            return false;
        }
    }
}

这样就可以通过 dates=1-1&dates=2-2 这样的查询字符串来绑定到 MyDate[] 数组上了。

参考资料

  • Bind arrays and string values from headers and query strings[1]

本文采用 Chat OpenAI 辅助注水浇筑而成,如有雷同,完全有可能。

  • 本文作者: newbe36524
  • 本文链接: https://www.newbe.pro/ChatAI/How-to-binding-query-to-array-in-dotnet-7/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

参考资料

[1]

Bind arrays and string values from headers and query strings: https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis?preserve-view=true&view=aspnetcore-7.0&WT.mc_id=DX-MVP-5003606#bind-arrays-and-string-values-from-headers-and-query-strings

标签:string,绑定,MyDate,id,Parse,Query,Net,public
From: https://www.cnblogs.com/newbe36524/p/16989668.html

相关文章

  • kubernetes-pod
    Pod作为k8s的核心对象,所有的k8s功能都必须通过Pod来实现。如何使用YAML描述PodPod是一个API对象,它必然具有apiVersion、kind、metadata、spec这四个字段apiVersion:v1......
  • kubernetes-使用yaml
    查询k8s支持的对象kubectlapi-resources#查看当前版本支持的所有对象kubectlexplainpodkubectlexplainpod.metadatakubecltexplainpod.speckubecltexplai......
  • 基于.NetCore开发博客项目 StarBlog - (24) 统一接口数据返回格式
    前言开发接口,是给客户端(Web前端、App)用的,前面说的RESTFul,是接口的规范,有了统一的接口风格,客户端开发人员在访问后端功能的时候能更快找到需要的接口,能写出可维护性更高的......
  • Netflix
    2009年Netflix举办了一场Netflix大奖赛。他们公开一批匿名数据,允许参赛团队使用以得出更好的算法。他们从获胜的团队中得到了现有算法10.06%的提升。Netflix本想再举行一场N......
  • 记一次 .NET 某智慧物流 WCS系统 CPU 爆高分析
    一:背景1.讲故事哈哈,再次见到物流类软件,上个月有位朋友找到我,说他的程序出现了CPU爆高,让我帮忙看下什么原因,由于那段时间在苦心研究C++,分析和经验分享也就懈怠了,今天就给......
  • .net core 5,6,7【多线程笔记】取消令牌(CancellationToken)
    介绍在使用C#异步的场景,多多少少会接触到CancellationTokenSource。它和取消异步任务相关的,CancellationToken就是它生产出来的。演示任务取消执行回调vartokenSource......
  • this指向终极解决方案(附带手写绑定函数)
    目录this指向this定义this绑定方式默认绑定隐式绑定显式绑定new绑定函数的this指向this绑定丢失的情况手写call、apply和bindthis指向this定义this用于指......
  • SpringBoot - @ImportResource,@ConfigurationProperties 让xml生效与类属性绑定配置文
    @ImportResource作用:使用.xml配置文件范围:必须使用在主程序@SpringBootApplication或配置类上@Configuration@SpringBootApplication@ImportResource("classpath:appl......
  • VmWare安装Centos后配置net网络
    1:首先安装VmWare2:启动时在安装对应的Linux版本,网络就默认net即可3:都安装好了之后,注意有一个大坑,输入的账号密码都不能准确登录最后发现是linux默认的输入法没有启用电......
  • .NET 云原生架构师训练营(基于 OP Storming 和 Actor 的大型分布式架构一)--学习笔记
    目录为什么我们用OrleansDaprVSOrleansActor模型Orleans的核心概念为什么我们用Orleans分布式系统开发、测试的难度(服务发现、通信)运维的复杂度(伸缩性与可靠性的保障)a......