0

如何在序列化对象以查询字符串值时覆盖 Flurl 的默认行为?例如下面的代码

DateTime date = new DateTime(2017, 1, 2, 3, 4, 5);
Url url = "http://domain.com".SetQueryParam("date", date);

产生以下网址:

http://domain.com?date=01%2F02%2F2017%2003%3A04%3A05

我想要的是这样的:

http://domain.com?date=2017-01-02T03%3A04%3A05.0000000

这将是序列化日期的结果,如下所示:

date.ToString("O")
4

1 回答 1

0

Flurl 负责 URL 编码,但除此之外并不真正关心自定义字符串格式。我想做你想做的最明显的方法是:

"http://domain.com".SetQueryParam("date", date.ToString("O"));

如果您经常这样做并且希望避免每次都指定格式位,您可以添加自己的扩展方法(一个 forUrl和一个 for string,每个模式):

public static Url SetDateParam(this Url url, string name, DateTime date)
{
    return url.SetQueryParam(name, date.ToString("O"));
}

public static Url SetDateParam(this string url, string name, DateTime date)
{
    return new Url(url).SetDateParam(name, date);
}

然后你有:

"http://domain.com".SetDateParam("date", date);
于 2017-02-14T15:00:00.087 回答