我有一个基本的 ASP.NET MVC5 应用程序,其中一个 Restaurant 类作为我的模型,并且我当前正在使用默认的开箱即用路由。
/餐厅/创建
/餐厅/详情
/餐厅/索引
此前这仅基于一个城市。现在我想制作这个多城市并以这种方式路由它
伦敦/餐厅/索引
曼彻斯特/餐厅/索引
伯明翰/餐厅/索引
我一直在阅读 ASP.NET 中的自定义路由、属性路由、路由约束,但我不知道如何实现上述目标。
我尝试将 RouteConfig.cs 中的默认路由更改为以下内容,但这不起作用。
routes.MapRoute(
name: "Default",
url: "{city}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是我的餐厅控制器索引签名
public ActionResult Index(int? RestaurantId)
{
ViewBag.Restaurants = new SelectList(db.Restaurants.ToList().OrderBy(r => r.RestaurantName), "RestaurantID", "RestaurantName");
return View(db.Restaurants.ToList());
}
为了将来阅读这篇文章的任何人的利益:我找到了一种不同的方式来实现我使用城市的目标。我阅读了子域,发现我可以使用:
london.mydomain.com
manchester.mydomain.com
birmingham.mydomain.com
这是通过使用自定义
RouteBase
类来实现的,如这篇有趣的文章中所述。