C# 使用多个参数定义管线

C# 使用多个参数定义管线,c#,asp.net-web-api,C#,Asp.net Web Api,我想定义一条这样的路线 https://www.example.com/api/Company/Example/Sequence/0325671?Next=10&Reference=1&Option=none... 其中,…可以是0到N个参数,如果不使用,这些参数可以为null或默认值 我能做这个吗 public IHttpActionResult GetNextRange([FromUri] ParameterDto parameters) { }

我想定义一条这样的路线

https://www.example.com/api/Company/Example/Sequence/0325671?Next=10&Reference=1&Option=none...
其中,
可以是0到N个参数,如果不使用,这些参数可以为null或默认值

我能做这个吗

    public IHttpActionResult GetNextRange([FromUri] ParameterDto parameters)
    {

    }

    public class ParameterDto
    {
        public long Next { get; set; }

        public string Reference { get; set; }

        public string Option { get; set; }
    }

当前的示例是针对.NET Core的-使用
[FromQuery]
属性。它是完整的。应使用.NET
[FromUri]

如果参数位于查询字符串中,则应使用
[FromQuery]
属性(如果是.NET Core):

如果要将查询字符串参数映射到对象,则应为每个需要的属性添加此属性:

public class ParameterDto
{
    [FromQuery]
    public long Next { get; set; }

    [FromQuery]
    public string Reference { get; set; }

    [FromQuery]
    public string Option { get; set; }
}
var keys = Request.Query.Keys; // or Request.QueryString.AllKeys;
var parameterValue = Request.Query["parameterName"]; // or Request.QueryString["parameterName"];
您还可以指定参数的名称:

[FromQuery(Name = "some_query_parameter_name")]
如果您不知道确切的参数(为什么需要这个?),您可以从
Request.Query
(.NET Core)或
Request.QueryString
(Full.NET)属性获取所有参数:

public class ParameterDto
{
    [FromQuery]
    public long Next { get; set; }

    [FromQuery]
    public string Reference { get; set; }

    [FromQuery]
    public string Option { get; set; }
}
var keys = Request.Query.Keys; // or Request.QueryString.AllKeys;
var parameterValue = Request.Query["parameterName"]; // or Request.QueryString["parameterName"];

我知道我的参数是什么,但这会随着时间的推移而增加。事实上,我创建了一个查询,参数是用户可以设置为自定义结果容器的选项。你想要json吗,你想要这个结果吗,你想要csv吗,如果是的话,哪种编码。。。因此,默认情况下,我将返回json,但我需要能够返回与csv、excel相同的结果,对于某些情况,我可能会在控制器中创建多个入口点,但对于其他情况,它将是参数。因此,您可以随时使用新参数将
参数扩展到
,或者只需从请求中获取集合并在需要的地方传递值,而无需映射到变量/对象。是的,[FromQuery]正是我所需要的。我只需要检查一下我是否可以将它与默认初始化结合起来,但是这部分我现在可以在我这边测试了。谢谢。但是我找不到FromQuery命名空间?它是用于.NET核心的。如果您使用完整的.NET,则应使用
[FromUri]