ASP.NET MVC 2应用程序中类似Twitter的路由

时间:2010-08-20 22:47:53

标签: c# .net asp.net-mvc-2 routing

我想设置路线如下:

xyz/映射到一个没有参数的动作方法,但是xyz/{username}映射到一个不同的动作(在同一个控制器中,不管,无关紧要),它接受一个名为username类型为string的参数。这是我到目前为止的路线:

routes.MapRoute(
    "Me",
    "Profile",
    new { controller = "Profile", action = "Me" }
);

routes.MapRoute(
    "Profile",
    "Profile/{username}",
    new { controller = "Profile", action = "Index" }
);

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

目前,如果我导航到/Profile/someuser,Profile控制器中的Index操作将按预期命中。但如果我导航到/Profile//Profile,我会获得404.

提供什么?

1 个答案:

答案 0 :(得分:4)

对我来说很好。我想您的Me控制器中没有Profile操作方法?

我尝试了以下路线:

routes.MapRoute(
    "Me",
    "Profile",
    new { controller = "Home", action = "Me" }
);

routes.MapRoute(
    "Profile",
    "Profile/{username}",
    new { controller = "Home", action = "Index" }
);

使用IndexMe操作方法定义如下:

public ActionResult Index(string username) {
   ViewData["Message"] = username;
   return View();
}

public ActionResult Me() {
   ViewData["Message"] = "this is me!";
   return View( "Index" );
}

我使用了默认的Home/Index视图。