使用MVC应用程序,该应用程序基本上是我所在城市列表/目录的前端数据库。
注册的清单如下所示:
something.com/Listings/View/{some-guid}
是否可以以这种格式显示:
something.com/{slug version of the destination name}
或
something.com/kfc-arabia
与客户分享链接非常容易,也是SEO友好。
答案 0 :(得分:0)
我认为很难在应用程序的根目录中匹配你的slug,因为这不允许应用程序中的其他路由。但是,如果你可以通过以下方式实现你想要的东西
something.com/directory/{slug}
有了这个,你只需要一个简单的规则来匹配一个合适的动作,将你的slug作为参数。
e.g。
context.MapRoute("Listings_by_slug",
"directory/{slug}",
new { controller = "Listings",
action = "ViewBySlug" });
你的行动将是这样的
public ActionResult ViewBySlug(string slug){
var listingGuid = _service.GetGuidFromSlug(slug);
return RedirectToAction("View", "Listing", new { id = listingGuid);
}
更新
如果你真的想要那么你就可以拥有像
这样的路线context.MapRoute("Listings_by_slug",
"{slug}",
new { controller = "Listings",
action = "ViewBySlug" });
你想把它放在你需要的其他路线之后,因为这条路线与你的应用程序匹配任何东西。实际上它应该是你最后宣布的路线。你也不可能有一个与slug同名的控制器