C# 具有多个属性的.Net MVC订单无关路由表

C# 具有多个属性的.Net MVC订单无关路由表,c#,.net,restful-url,C#,.net,Restful Url,我正在使用C#.Net设置一个RESTful API。对于我的一个路由区域,我想让用户能够以任何顺序查询任意数量的属性,作为过滤结果的一种方式。现在我有6个属性。有没有一种方法可以轻松创建一个订单无关的属性路由表,而不需要手动指定所有不同的组合 例如,我希望用户能够使用以下URL进行查询,前两个URL调用相同的函数以得到相同的结果: /api/transactions/attr1/{attr1:int}/attr2/{attr2:int}/attr4/{attr4:int} /ap

我正在使用C#.Net设置一个RESTful API。对于我的一个路由区域,我想让用户能够以任何顺序查询任意数量的属性,作为过滤结果的一种方式。现在我有6个属性。有没有一种方法可以轻松创建一个订单无关的属性路由表,而不需要手动指定所有不同的组合

例如,我希望用户能够使用以下URL进行查询,前两个URL调用相同的函数以得到相同的结果:

/api/transactions/attr1/{attr1:int}/attr2/{attr2:int}/attr4/{attr4:int}       
/api/transactions/attr2/{attr2:int}/attr1/{attr1:int}/attr4/{attr4:int} 
/api/transactions/attr4/{attr4:int}
/api/transactions/attr6/{attr6:int}/attr3/{attr3:int}/attr5/{attr5:int}/attr2/{attr2:int}/attr1/{attr1:int}

如果希望允许用户进行查询,可能应该使用WebAPI而不是MVC,因为WebAPI支持OData,OData是一种客户端查询语法。例如,你可以说:


/AccountSet?$filter=OwnerId/Id eq(guid'+SystemUserId+“)

您应该通过
QueryString
表单
输入来执行此操作<代码>查询字符串或
表单
输入可以是任意顺序,而URL不能不变得非常混乱

/api/transactions?attr1={attr1:int}&attr2={attr2:int}&attr4={attr4:int}       
/api/transactions?attr2={attr2:int}&attr1={attr1:int}&attr4={attr4:int} 
/api/transactions?attr4={attr4:int}
/api/transactions?attr6={attr6:int}&attr3={attr3:int}&attr5={attr5:int}&attr2={attr2:int}&attr1={attr1:int}
您只需路由
/api/transactions
,并让模型绑定器完成其余工作