教你如何在.Net 7中將Query繫結到陣列

大雄45發表於2023-02-04
導讀 這篇文章主要給大家介紹了關於如何在.Net 7中將Query繫結到陣列的相關資料,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

在 .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繫結到陣列的文章就介紹到這了

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2933662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章