2011-07-15 120 views
0

我有一個奇怪的問題。我有一個控制器動作,這需要幾個可選參數帶空參數的MVC3路由問題

Function Index(sectionID As Integer?, title As String) As ActionResult 

    Return View() 
End Function 

然後我已經添加了這個動作方法的具體路線,使我們得到相當的URL本頁

routes.MapRoute(_ 
     "By_Section", _ 
     "home/{sectionID}/{title}", _ 
     New With {.controller = "Home", .action = "Index", .sectionID = Nothing}, 
     New With {.sectionID = "\d+"} 
     ) 

這一切工作。但是,當我在設置sectionID的頁面上(例如http://localhost/home/index/1/test)時,以下代碼段會產生奇數輸出。

<%= Url.Action("Index", "Home")%> 

而不是顯示http://localhost/home/index正如你所預料的,它顯示http://localhost/home/index/1/test。所以它顯示它正在從當前網址獲取sectionID和標題,並自動將它們插入到Url中。

我該如何防止這種情況發生?

感謝

詹姆斯

回答

1

是的,這是預期的行爲,路由系統,如果你沒有明確提供了一個新的值會從當前請求重用的參數值。呈現鏈接時的最佳選項是爲所有路由參數指定顯式值。

<%= Url.Action("Index", "Home", new { sectionID = (int?)null }) %> 
+0

感謝您的回覆。那麼我怎麼能強制一個空參數,因爲在我的情況下,一個空的sectionID有意義? – James

+0

我已經更新了我的答案 – devdigital