2010-07-06 44 views
0

這裏我:C#3.5 MVC2路由跳過可選PARAM

routes.MapRoute(
    "test", // Route name 
    "DataWarehouse/Distribution/{category}/{serialNo}", 
    new { controller = "DataWarehouse", 
      action = "Distribution", 
      category= UrlParameter.Optional, 
      serialNo = UrlParameter.Optional } 
); 

類別和的SerialNo都是可選的PARAMS。當路由類似於:DataWarehouse/Distribution/123時,它始終將123作爲類別的值。

我的問題是我如何能知道第一個參數可以是類別或serialNo,即DataWarehouse/Distribution/{category}DataWarehouse/Distribution/{serialNo}

回答

0
DataWarehouse/Distribution/{category}/{serialNo} 

只有最後一個參數可以是可選的。在這個例子中,由於顯而易見的原因,該類別不可選。

0

如果你知道你的參數將是什麼樣子,你可以添加一個route constraint來區分這兩種途徑

防爆,如果您的序列是:1234-1234-1234,並在分類不是這樣:

0

我有一個類似的問題,我試圖根據數據({year}/{month}/{day})路由,其中​​monthday可能是可選的。我發現我無法用一條路線來完成。所以我通過使用3條路線從泛型到具體(年,年,月,年,月和日)解決了這個問題。我對此並不滿意,但它很有用。

因此,假設您正在尋找DataWarehouse/Distribution/{category}和​​3210路線,我認爲這對您有用。