前言
在 .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[] 数组上了。