我有一个带有以下签名的控制器:
[Route("products/filter/{apc=apc}/{xpc=xpc}/{sku=sku}")]
public IHttpActionResult Get(string apc, string xpc, int? sku)
{ ... }
我使用以下URI调用此方法:
- ~/api/products/filter?apc=AA&xpc=BB
- ~/api/products/filter?sku=7199123
第一个URI可以正常工作,但第二个URI会有奇怪的副作用。尽管在没有提供参数时,apc和xpc的默认值应该为null,但实际上它们的值是它们的名称。我可以通过添加额外的逻辑来克服这个问题:
apc = (apc == "apc") ? null : apc;
xpc = (xpc == "xpc") ? null : xpc;
这似乎是一种 hack 的方法,而且如果传递的值恰好等于参数名,则可能会出现问题。
有没有一种不会产生这种副作用的定义路由的方法?
null
呢? - Kenneth K.