例如你有这个
enum
:
public enum MyEnum
{
enum1,
enum2,
enum3,
enum4
}
并且您想传递
IEnumerable<MyEnum>
作为查询参数?
我试过这个:
var queryParameters = new Dictionary<string, string>();
var myEnums = someParemeters.MyEnums.Select(x => new KeyValuePair<string, string>(nameof(MyEnum), x.ToString()));
queryParameters.Add(nameof(SomeParemeters.MyEnums), myEnums.ToString());
if (queryParameters != null) uri = QueryHelpers.AddQueryString(uri, queryParameters);
但这当然行不通。如何获取
MyEnums
作为字符串作为查询参数 '?myEnums=enum1&myEnums=enum4' 发送?
PS:我正在使用图书馆
Microsoft.AspNetCore.WebUtilities
1 选项是将其作为逗号分隔的枚举值列表发送,这使用
System.Linq
和 System.Enum
:
string enumvalues = string.Join(',',
Enum.GetValues<MyEnum>().ToArray());
然后您可以将其添加为查询字符串值,例如:
uri + $"?myEnums={enumvalues}";
然后在客户端你可以这样做:
MyEnum[] enums = HttpContext.Request.Query["myEnums"].ToString()
.Split(',').Select(a => Enum.Parse<MyEnum>(a)).ToArray();