我的要求是为urls提供可选的参数。urls应该类似于。
我写了下面的routes
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.MapRoute(
"FAQDefault",
"FAQ",
new { controller = "FAQ", action = "Default" });
routes.MapRoute(null, "{id}", new { controller = "Home", action = "Default", id = UrlParameter.Optional });
routes.MapRoute("rent", "{id}/{rent}/{unit}", new { controller = "Home", action = "Default", id = UrlParameter.Optional, rent = UrlParameter.Optional, unit = UrlParameter.Optional });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Default", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "CDCPortal" });
}和控制器写得如下:
public ActionResult Default(string id, string rent=null,string unit=null){}它的工作罚款1 url,但不工作的第二url.。
发布于 2014-03-19 13:39:14
没有必要这样做,在第一种情况下,您已经这样做了:
second route可以处理any number of parameters。
发布于 2014-03-19 13:45:04
您需要为每个组合定义一条路径,如下所示
routes.MapRoute("Default-AllOptional",
"Default/{id}/{rent}/{unit}",
new
{
controller = "Home",
action = "Default"
// nothing optional
}
);
routes.MapRoute("Defaul-Id-rent-Optional",
"Default/{id}/{rent}",
new
{
controller = "Home",
action = "Default",
id=UrlParameter.Optional,
rent=UrlParameter.Optional
}
);参考Routing Regression With Two Consecutive Optional Url Parameters
https://stackoverflow.com/questions/22507476
复制相似问题