ASP.NET MVC路由参数

时间:2011-12-20 11:50:08

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 asp.net-mvc-routing

asp.net mvc路由模式是

 {"some_parameter/{controller}/{action}/{id}"}

如果some_parameter可以为null或字符串为空

,这是否为有效格式

2 个答案:

答案 0 :(得分:3)

修改

我刚刚对路线注册进行了重新排序,以便它可以正常工作:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {
        controller = "home",
        action = "index",
        id = UrlParameter.Optional }
);

routes.MapRoute(
    "Default", // Route name
    "{some_parameter}/{controller}/{action}/{id}", // URL with parameters
    new {
        some_parameter = UrlParameter.Optional,
        controller = "home",
        action = "index",
        id = UrlParameter.Optional
    }
);

他们应该按照该顺序注册。另外,第二个路由需要一个id和some_parameter参数,否则它将永远不会被击中,因为它之前的路由。即使some_parameter和id参数设置为可选,也不会发生这种情况,因为前面的路由会在它为空时捕获它。

答案 1 :(得分:3)

我认为你想要的是{some_parameter}/{controller}/{action}/{id}(注意“some_parameter”周围的大括号),在这种情况下,我认为它不应该为空或空。在some_parameter为空的情况下,您认为您的结束URL可能与路线匹配? “mysite.com//mycontroller/myaction/myid”?

路由引擎只匹配模式。如果您想同时处理{some_parameter}/{controller}/{action}/{id}{controller}/{action}/{id},只需定义两条路线。