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]
。