搜索

查看: 3039|回复: 11

[ASP.NET] 如何在.Net 7中将Query绑定到数组详解

[复制链接]
发表于 2023-5-4 11:26:30 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:26:30 3039 11 看全部
目录
  • 前言
  • 代码演示
  • 借助 IParsable 绑定更复杂的类型
  • 参考资料
  • 总结
    前言
    在 .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 接口来实现自定义的绑定。
    public class MyDate : IParsable
    {
        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:

    总结
    到此这篇关于如何在.Net 7中将Query绑定到数组的文章就介绍到这了,更多相关.Net7将Query绑定到数组内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-28 19:31:28 | 显示全部楼层
    贰十岁装成熟装s 2023-6-28 19:31:28 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-28 19:39:36 | 显示全部楼层
    米老鼠和蓝精鼠v 2023-6-28 19:39:36 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 01:56:51 | 显示全部楼层
    术数古籍专卖疤 2023-6-29 01:56:51 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 04:46:29 | 显示全部楼层
    尘埃416 2023-6-29 04:46:29 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 11:23:36 | 显示全部楼层
    dxf17 2023-6-29 11:23:36 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-29 14:17:36 | 显示全部楼层
    123456819 2023-6-29 14:17:36 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    发表于 2023-6-29 16:09:32 | 显示全部楼层
    心随674 2023-6-29 16:09:32 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    回复

    使用道具 举报

    发表于 2023-6-29 18:06:04 | 显示全部楼层
    123456848 2023-6-29 18:06:04 看全部
    楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 20:35:18 | 显示全部楼层
    无人岛屿颈 2023-6-29 20:35:18 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表