关于MVC中的SLUG

时间:2017-11-03 08:58:42

标签: c# .net asp.net-mvc model-view-controller routing

使用MVC应用程序,该应用程序基本上是我所在城市列表/目录的前端数据库。

注册的清单如下所示:

something.com/Listings/View/{some-guid}

是否可以以这种格式显示:

something.com/{slug version of the destination name} 

something.com/kfc-arabia

与客户分享链接非常容易,也是SEO友好。

1 个答案:

答案 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同名的控制器