2010-02-19 99 views
2

爲web表單使用新的(ish)url重寫功能,但是我試圖將參數聲明爲可選參數時遇到問題。在webforms中使用url路由的可選URL參數

這裏是場景。我有一個搜索功能,它接受兩個參數,SKU和名稱。理想情況下,我希望此搜索功能的URL爲/ products/search/skuSearchString/nameSearchString。我還有各種管理頁面,需要映射到諸如/ products/management /或/ products/summary /之類的東西。換句話說,URL中的最後兩個參數需要是可選的 - 可能有一個搜索字符串,或者兩個,或者沒有。

這是怎麼了,我宣佈我的虛擬網址:

Friend Const _VIRTUALURL As String = "products/{action}/{sku}/{*product}" 

,並添加以下缺省值:

Me.Defaults = New Web.Routing.RouteValueDictionary(New With {.sku = "/"}) 
    Me.Defaults = New Web.Routing.RouteValueDictionary(New With {.product = "/"}) 

我有兩個問題與此設置。最緊迫的是該網址似乎期望sku參數。因此,/ products/summary /無法找到,但/ products/summary/anyTextAtAll /會映射到正確的頁面。無論默認設置爲「/」還是「」,您都會得到相同的結果。我如何確保Sku和產品參數都是可選的?

第二個更值得關注。理想情況下,我希望url能夠判斷它是否有產品搜索字符串或網址搜索字符串。做到這一點的顯而易見的方法是將其中一個或另一個默認設置爲我可以接受並忽略的值,但是有沒有更好的方法來處理它?

回答

1

我不知道我完全理解這個問題,但我對您到目前爲止已經證明一些什麼評論:

在你設置默認值的方式似乎不正確。您首先要爲「sku」設置一個默認值字典。然後您將替換爲默認值字典,其值爲「產品」。

默認值「/」不可能是你想要的。在這種情況下,它聽起來像你想要一個默認值「」(空字符串)。

試着這麼做:

Me.Defaults = New Web.Routing.RouteValueDictionary(New With { 
    .sku = "", 
    .product = "" }) 

我的VB的技能是相當弱的,所以語法我表現可能不完全正確。

我認爲,如果你改變這兩個,那麼你應該很好去。