我有一种情况,我想在我的应用程序中使用路由,以便应用程序的索引方法可以识别此http://www.website.com/ID
此外,http://www.website.com/Controller/Action
也应该有用。
问题在于,当我设置与第一个URL对应的路由时,第二个URL的路由不起作用(即使我为此设置了单独的路由)。
请告诉我这里我做错了什么......
答案 0 :(得分:2)
ID
值是否具有一些区别特征,可以让您区分它和控制器名称?例如,它是数字吗?如果是这样,您可以在第一个路径上设置约束,使其仅匹配ids。这将允许其他请求通过第二个(默认)路由。
routes.MapRoute(
"IdRoute",
"{id}",
new { controller = "home", action = "get" },
new { id = "\d+" } // match ids that consist of 1 or more digits
);
routes.MapRoute(
"Default",
new { controller = "home", action = "index", id = UrlParameter.Optional }
);
答案 1 :(得分:0)
以下内容应该有效:
routes.MapRoute(
"DefaultWithID",
"{id}",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
假设:
public class HomeController : Controller
{
public ActionResult Index(string id)
{
return View();
}
}
两者:/123
和/Home/Index/123
工作正常。