在ASP.NET Core中,我想生成某種類型的SEO-URL,其中包含條目的ID以及其標題。自定義ASP.NET核心路由的ID和標題用連字符分隔
實施例:example.com/News/ViewNews/123-test-news
在Startup.cs予定義的以下路線
routes.MapRoute(
name: "SeoNews",
template: "{controller=News}/{action=ViewNews}/{id:int}-{title}"
);
在新聞 - 控制器,下面的動作存在
public IActionResult ViewNews(int id, string title) { }
裏面的斷點給了我空值,所以id = 0和title = null。
調用
例子:example.com/News/ViewNews/123
給我的ID = 123,但空標題的原因是不存在的URL。我的重寫路線有什麼問題?
其他途徑,我以後我的自定義路由定義:
routes.MapRoute(
name: "AreaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
routes.MapRoute(
name: "DefaultMVCRoute",
template: "{controller=Dashboard}/{action=Index}/{id?}"
);
編輯 我試圖像這樣做一個斜線替換連字符,所以路由模板{controller=News}/{action=ViewNews}/{id:int}/{title}
。這工作完美..不明白爲什麼。我已經試圖擺脫連字符,因爲它可能會衝突爲正則表達式中的特殊字符,這不起作用。
使用斜槓作爲分隔符對我來說是一個可行的解決方法。但是我很想知道這個字符上有什麼特別之處,它不起作用,所以我重命名了問題標題。
你加這個默認路由上面? – Webbanditten
是的,我在自定義之後定義了區域和默認MVC路線,並在第一篇文章中添加了他們的代碼。 – Lion
如果您嘗試'example.com/News/ViewNews/123-testnews' url,它會如何表現? –