我試圖以編程方式將查詢字符串映射到我在RouteConfig.cs
文件中創建的SEO友好路由URL,但似乎很難。從RouteData生成格式化的友好URL
我的路由配置是這樣的:
routes.MapRoute(
name: "ReviewPost",
url: "{year}/{month}/{filename}/",
defaults: new {controller = "ReviewPost", action = "Detail"},
namespaces: new[] {"ApplicationName.Website.Controllers"},
constraints: new {year = @"\d{4}", month = @"\d{2}"}
);
而且我能夠檢索正確的RouteData
對象,像這樣:
string url = "~/ReviewPost/Detail/?year=2015&month=05&filename=review-title";
RouteData routeData = RouteDataUtils.RouteByUrl(myUrl);
但是我有困難,搞清楚如何產生該網址應該看起來像我的配置(/2015/05/review-title/
)中指定的網址。
RouteData
對象是否能夠創建上述格式化URL的實例,還是我必須自己設置格式?或者,MVC框架是否有一個使用RouteData
對象正確格式化URL字符串的類?
任何幫助,將不勝感激。
只是要說清楚:你說當你嘗試URL涉及ReviewPost/Detail/2015/5/review-title時,它目前不工作? – DWright
該URL正在工作。我試圖以編程方式將未格式化的查詢字符串('〜/ ReviewPost/Detail /?year = 2015&month = 5&filename = review-title')轉換爲我的配置中的格式化查詢字符串('/ 2015/05/review-title/')。爲了清晰起見,我剛剛更新了答案。 –