我添加了路由到我的解決方案,以便在地址欄中使用更友好的URL。路由和反射問題
我開始解決方案,當我翻閱我的收藏夾鏈接時,我看到網址.../Affaire /收藏夾(下圖)。這一個對我來說可以。
當我側翻我回收站的鏈接,我看到URL ../Affaire/Deleted(下圖)。這一個對我來說可以。
然後我點擊回收站鏈接,我導航到相應的頁面和URL地址欄中顯示對我來說(下圖)OK。
接下來,我再次翻轉收藏夾鏈接(圖片下方),我看到了網址../Affaire/Delete?OnlyFavorite=true!這不好。
路由現在檢索的屬性不是從我的鏈接,但是從積極的網址!這個屬性被命名爲OnlyFavorite,我不想要這個屬性。這是「反思」。請注意,我的所有路由都使用相同的控制器和相同的操作,但使用不同的路由屬性。
下面是我使用的一些鏈接。
示例導航到最喜愛的網頁:
@Html.ActionLink("Favorites", "SearchAffaires", new { OnlyFavorite = true })
示例導航到回收站頁:
@Html.ActionLink("Recycle bin", "SearchAffaires", new { StatusCode = "DELETED" })
這裏是我的路線:
routes.MapRoute(
"Affaire Status Open/Closed/Deleted", // Route name
"{controller}/{StatusCode}", // URL with parameters
new { action = "SearchAffaires" }, // Parameter defaults
new { controller = "Affaire", StatusCode = "^Open$|^Closed$|^Deleted$" }// Contraints
);
routes.MapRoute(
"Affaire Only Favorite", // Route name
"{controller}/Favorite", // URL with parameters
new { action = "SearchAffaires", Page = 1, OnlyFavorite = true }, // Parameter defaults
new { controller = "Affaire" } // Contraints
);
你有任何想法我怎麼能繼續避免這種行爲?
我不希望路由通過反射從我當前的URL中獲取名爲OnlyFavorite的屬性。我已經嘗試在動作鏈接上傳遞OnlyFavorite = null,但它不起作用:路由說「好的,我沒有鏈接本身的OnlyFavorite值,但是我只有URL的OnlyFavorite,所以我使用它!」。
我嘗試的String.Empty,但它不工作。路由仍使用來自URL的值(「DELETED」)。我也嘗試使用StatusCode =(string)null,但仍然不行。 – Bronzato
我已經嘗試顛倒我的路線,但問題仍然存在:路由系統總是嘗試從routeValues或活動URL獲取任何屬性。 – Bronzato