2010-06-10 66 views
0

我有一個包含多個可選參數的路由。這些是不同領域中可能的搜索術語。因此,舉例來說,如果我有領域的關鍵,項目類型和文本,然後我在Global.asax中:如何提交Nothing作爲路由值到ASP MVC

routes.MapRoute(_ 
     "Search", _ 
     "Admin.aspx/Search/{Key}/{ItemType}/{Text}", _ 
     New With {.controller = "Admin", .action = "Search" .Key = Nothing, .ItemType = Nothing, .Text = Nothing} _ 
    ) 

我的行動發生可選參數:

Function Search(Optional ByVal Key As String = Nothing, _ 
       Optional ByVal ItemType As Integer = 0, _ 
       Optional ByVal Text As String = Nothing, _ 
       Optional ByVal OtherText As String = Nothing) 

然後,它會檢查重點和文本字符串具有非空(非空)值,並根據需要將搜索條件添加到數據庫請求中。

但是,是否有可能發送一個空值爲例如密鑰,但仍然發送文本的值?如果是這樣,那麼URL是什麼樣的? (Admin.aspx /搜索// 0/Foo不工作:))

我知道我可以使用參數數組來處理這個問題,但是想知道這是否可以使用所描述的路線?我當然可以定義一些其他的值等價於null(例如,空格/%20),但是有什麼方法可以在URL中發送空值?我懷疑不是,但是我想我會看到有沒有人知道一個。

我在這個項目中使用ASP MVC 2。

回答

1

在你的路線,使用UrlParameter.Optional爲默認值:

routes.MapRoute(_ 
    "Search", _ 
    "Admin.aspx/Search/{Key}/{ItemType}/{Text}", _ 
    New With { .controller = "Admin", .action = "Search", _ 
       .Key = UrlParameter.Optional, .ItemType = UrlParameter.Optional, _ 
       .Text = UrlParameter.Optional } _ 
)