比方說我們有這樣的路線:MVC URL.RouteUrl刪除RouteValues但URL.Action保留呢?
routes.MapRoute(
"Library",
"Lib/{id}/{lang}",
New With {.controller = "MyLibrary", .action = "ShowItem", .id= 0, .lang = "en"}
)
而且可以說,我們要求這個網址:
http://localhost/Lib/10/de
所以現在我們有這個路由值:id = 10 & lang = de
這裏的問題是:
此代碼:
<%= Url.Action("ShowItem", New With {.id = 45})%>
回報:
http://localhost/Lib/45/de
它改變ID但保留郎。
但這代碼:
<%= Url.RouteUrl("Library", New With {.id = 45})%>
回報:
http://localhost/Lib/45
它改變ID但是移除郎!
這是一個錯誤還是什麼?我知道如何解決這個問題,但這種不同的行爲非常混亂。我對嗎?或者只是想象這個?
一個快速的解決將是:
<%= Url.RouteUrl("Library", New With {.id = 45},.lang = RouteData.Values("lang"))%>
感謝DanH的回答,對不起,我的回覆晚了。正如你所說,我認爲這是因爲其他路線。在David的回答和建議後,我創建了一個新項目,並發現每件事情都正常。我真的希望給你一部分獎金,但大衛的回答看起來更好。再次感謝&+1 –
我要給大衛提供賞金點,並回答Dan。你們都幫了我很多。大衛的回答完成了,我發現問題是由於定義的路線。丹的回答確保了其他定義的路線導致了這個問題。 –
非常公平的你謝謝! – DanH