我試圖從Html.ActionLink得到一個漂亮的URL,但我得到的是querystring版本。當我在瀏覽器的導航欄中輸入什麼值時,我定義了一個完美的路徑,並最終獲得視圖並觸發控制器操作,我想我會這樣做。Html.ActionLink行爲不如預期
我的路由定義:
routes.MapPageRoute(
"WebFormDefault",
"",
"~/Login.aspx"
);
routes.MapRoute(
"MvcDefault",
"{controller}/{action}/{id}",
new {controller = "Foo", action = "Index", id = UrlParameter.Optional}
);
我的助手呼籲標記:
<ul>
<li>@Html.ActionLink("Foo Link", "FooAction", "Foo")</li>
</ul>
實際結果:
<a href="/?action=FooAction&controller=Foo">Foo Link</a>
我的期望:
<a href="/Foo/FooAction">Foo Link</a>
我曾嘗試在當前應用程序之外開始一個新項目,並看到預期結果。我已經手動添加MVC到項目中,因爲它最初是一個webforms應用程序。這是各種各樣的雜交,我不確定是否會造成問題。我使用nuget引入MVC程序集和依賴項,並根據VS中的輸出從「New Project ...」模板自己設置配置。我看到兩者之間沒有區別,就我的根名稱空間之外的配置而言,我可以使用我的先前存在的類型。但是,我不知道是否還有其他事情需要我去做。但令人困惑的是,因爲MVC已經在混合環境中行動,否則就像我期望的那樣。
您是否嘗試過使用像Glimpse這樣的東西來調試路由,以確保您的路由按照您的預期映射? –
我完全忘記了一瞥。我會看看它有什麼要說的。 – Bigsby
我認爲你需要先審查下面的網址:http://stackoverflow.com/questions/22914859/mvc5-actionlink-pass-data-as-query-string –