I have a controller with the following signature:
[Route("products/filter/{apc=apc}/{xpc=xpc}/{sku=sku}")]
public IHttpActionResult Get(string apc, string xpc, int? sku)
{ ... }
I call this method with following URIs:
- ~/api/products/filter?apc=AA&xpc=BB
- ~/api/products/filter?sku=7199123
The first URI works without issue. The second one has a strange side effect. Even though the default values for apc and xpc should be null when not provided, the parameters are actually their names. I can overcome this by adding the additional logic:
apc = (apc == "apc") ? null : apc;
xpc = (xpc == "xpc") ? null : xpc;
This seems like a hack, and would be problematic if value passed was ever equal to the parameter name.
Is there a way to define the Route without this side effect?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…