我有以下路由:{param1}/{param2}/{param3}並且我想將它綁定到沒有param1參數的操作(它對它並不重要)。如果我只是不在action方法中定義param1參數,則ASP.NET MVC不會選擇路由。所以現在我必須在動作中定義param1參數,而不是使用它。ASP.NET MVC忽略路由值
有什麼辦法可以忽略一些路徑值,不必在動作方法中定義它們嗎?
我有以下路由:{param1}/{param2}/{param3}並且我想將它綁定到沒有param1參數的操作(它對它並不重要)。如果我只是不在action方法中定義param1參數,則ASP.NET MVC不會選擇路由。所以現在我必須在動作中定義param1參數,而不是使用它。ASP.NET MVC忽略路由值
有什麼辦法可以忽略一些路徑值,不必在動作方法中定義它們嗎?
你爲什麼不重新排序參數,以便有云:
routes.MapRoute(
//// Route name
"myNewRoute",
//// URL with parameters
"{param2}/{param3}/{param1}",
//// Parameter defaults
new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty, param1 = string.Empty });
現在,如果你只提供前兩個參數,它需要參數2和參數3。 param1默認爲string.empty。
如果您提供了所有三個參數,那麼param1,param2和param3都將具有值。
第二種方法是使用2 MapRoutes。請注意,我在此處添加了「自定義」路由,以確保路由引擎可以區分此路由和具有三個參數的路由,並且應該轉到默認的asp mvc路由。
我還在Route2之前放置了Route1,因此路由引擎(如果它看到2個參數)將優先於Route2上的此路由。如果您提供3個參數,則路由將優先於Route1而不是Route1或默認的mvc路由。
routes.MapRoute(
//// Route name
"Route1",
//// URL with parameters
"Custom/{param2}/{param3}",
//// Parameter defaults
new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty });
routes.MapRoute(
//// Route name
"Route2",
//// URL with parameters
"Custom/{param1}/{param2}/{param3}",
//// Parameter defaults
new { controller = "MyController", action = "MyActionName", param2 = string.Empty, param3 = string.Empty, param1 = string.Empty });
給出我提供的兩個答案,我更喜歡這個,因爲它的簡單性。 – MedicineMan 2010-12-11 23:41:59