在我的ASP MVC的Web應用程序,我的控制器往往有行動「名稱」的參數,如:ASP MVC路由 - 如何更改默認的ID參數的名稱,同時保持默認路由完好
Function Consult(name As String) As ActionResult
.....
Return View()
End Function
我想能夠瀏覽這些行動以同樣的方式我會瀏覽他們與「ID」參數:../Book/Consult/MyBookName
但我想的默認路由,繼續工作「id」參數。換句話說,我希望默認路由接受「id」或「name」作爲參數名稱。
因此,我試圖配置我的路線,但它不工作,因爲所有的請求似乎使用第一條路線,而不是第二條路線。帶有「id」參數的操作不再起作用。
routes.MapRoute(_
name:="Name", _
url:="{controller}/{action}/{name}", _
defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
//Default Route
routes.MapRoute(_
name:="Default", _
url:="{controller}/{action}/{id}", _
defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
我的代碼示例是在VB中,但我會接受在C#中的答案以及:)謝謝很多人。
編輯:澄清,如果我只是簡單地將參數重命名爲「ID」,一切工作正常,只是在我的路由配置默認路由。但我想保留「名稱」,因爲它在這些特定情況下更加乾淨。
是什麼類型你'id'?知道這一點很重要,就好像'Name'路線將首先出現,我們希望將它從具有id的匹配路線中排除,如果可以的話(可能存在名稱看起來像id的情況,在這種情況下,我們很難認識到這是一個名稱,而不是一個id) –
在我的情況下,'id'是整數,但是可以保持默認路由與任何類型的'id'?在將來,我可能不得不支持字符串ID例如.. – JayMF