我在这里:
routes.MapRoute(
"test", // Route name
"DataWarehouse/Distribution/{category}/{serialNo}",
new { controller = "DataWarehouse",
action = "Distribution",
category= UrlParameter.Optional,
serialNo = UrlParameter.Optional }
);
Category和serialNo都是可选参数。当路由类似于:DataWarehouse/Distribution/123
时,它始终将123视为类别的值。
我的问题是如何让它知道第一个参数可以是category或serialNo,即DataWarehouse/Distribution/{category}
和DataWarehouse/Distribution/{serialNo}
。
答案 0 :(得分:0)
DataWarehouse/Distribution/{category}/{serialNo}
只有最后一个参数可以是可选的。在此示例中,由于显而易见的原因,类别不能是可选的。
答案 1 :(得分:0)
如果您知道参数的外观,可以添加route constraint来区分两条路线
如果您的序列号为1234-1234-1234,并且您的类别不是这样的话,请访问:
routes.MapRoute(
"serialonly", // Route name
"DataWarehouse/Distribution/{serialNo}",
new { controller = "DataWarehouse",
action = "Distribution",
category= UrlParameter.Optional,
serialNo = UrlParameter.Optional },
new{serialNo = @"\d{4}-\d{4}-\d{4}"}
);
routes.MapRoute(
"test", // Route name
"DataWarehouse/Distribution/{category}/{serialNo}",
new { controller = "DataWarehouse",
action = "Distribution",
category= UrlParameter.Optional,
serialNo = UrlParameter.Optional },
,
new{serialNo = @"\d{4}-\d{4}-\d{4}"}
);
答案 2 :(得分:0)
我遇到了类似的问题,我尝试根据{year}/{month}/{day}
或month
可选的数据(day
)进行路由。我发现的是我无法用一条路线做到这一点。所以我通过使用3条路线解决了这个问题,从通用到特定(年,年,月,年,月和日)。我并不十分满意,但它确实有效。
因此,如果您正在寻找DataWarehouse/Distribution/{category}
和DataWarehouse/Distribution/{category}/{serialNo}
路线,我认为这对您有用。