MVC3 maproute其中URL的第一个值是用于默认控制器和操作的querstring

时间:2011-07-12 16:02:04

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

我想做一条这样的路线:

routes.MapRoute(
            "Default", // Route name
            "{s}", // URL with parameters
            new { controller = "Home", action = "Index", s = UrlParameter.Optional } 
        );

其中s是默认控制器和操作的参数..这可能吗?我也会满足于:

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{s}", // URL with parameters
            new { controller = "Home", action = "Index", s = UrlParameter.Optional } 
        );

        routes.MapRoute(
            "qMap", // Route name
            "sc/{s}", // URL with parameters
            new { controller = "Home", action = "Index", s = UrlParameter.Optional } 
        );

但是没有工作..我怀疑因为第一个元素/参数总是被期望成为一个控制者?

1 个答案:

答案 0 :(得分:0)

如果您只有以下路径定义(确保已从RegisterRoutes方法中删除了所有其他路径定义):

routes.MapRoute(
    "Default",
    "{s}",
    new { controller = "Home", action = "Index", s = UrlParameter.Optional } 
);

和以下控制器:

public class HomeController: Controller
{
    public ActionResult Index(string s) 
    {
        ...
    }
}

表单http://foo.com/abc的请求将被路由到Home控制器,Index操作将被调用并传递s=abc