Asp.net mvc MVC中的多个可选参数不起作用
我的要求是为URL提供可选参数。URL应该类似于 我写了以下Asp.net mvc MVC中的多个可选参数不起作用,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我的要求是为URL提供可选参数。URL应该类似于 我写了以下路线 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)
路线
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不起作用。没有必要这样做,您在第一种情况下已经这样做了:
second route
可以处理任意数量的参数
您需要为以下每种组合定义一条路由
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
}
);
请参阅我已删除其中一个,但对于第二种情况仍然不起作用。您应该检查您在任一路线中提供的约束代码,我认为约束失败,顺便说一句
Default1
路线已足够,不需要默认路由。你使用的是什么版本的MVC?这个错误在.NET4中修复了。5@MaxToro非常感谢。不确定OP使用的是哪个版本的MVC。我在MVC 3中遇到了这个问题。我找到了解决办法。@Krishnamean,解决办法是什么?