C#3.5 MVC2路由跳过可选参数
我有:C#3.5 MVC2路由跳过可选参数,c#,asp.net-mvc-2,routing,C#,Asp.net Mvc 2,Routing,我有: routes.MapRoute( "test", // Route name "DataWarehouse/Distribution/{category}/{serialNo}", new { controller = "DataWarehouse", action = "Distribution", category= UrlParameter.Optional, serialNo = UrlPa
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的值
我的问题是如何知道第一个参数可以是category或serialNo,即DataWarehouse/Distribution/{category}
和DataWarehouse/Distribution/{serialNo}
DataWarehouse/Distribution/{category}/{serialNo}
只有最后一个参数可以是可选的。在本例中,由于明显的原因,类别不能是可选的。如果您知道参数的外观,您可以添加一个选项来区分这两条路线 例如,如果您的序列号为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}"}
);
我有一个类似的问题,我试图根据数据(
{year}/{month}/{day}
)进行路由,其中月
或日
可以是可选的。我发现我不能用一条路线来做这件事。所以我用3条路线解决了这个问题,从一般到具体(年、年、月、年、月、日)。我并不完全满意它,但它确实有效
因此,如果您正在寻找DataWarehouse/Distribution/{category}
和DataWarehouse/Distribution/{category}/{serialNo}
路由,我认为这将适合您