是否可以传递路由值以显示MVC中没有控制器名称的用户名

时间:2010-03-17 06:34:54

标签: c# model-view-controller routing

我希望将我的网站的网址设为“www.ABCD.com/username”而不使用MVC架构中的控制器名称,这样当我点击特定用户的名称时,我想要显示用户的详细信息只是在网址中显示的用户名。

1 个答案:

答案 0 :(得分:2)

这应该让你朝着正确的方向前进:

routes.MapRoute(
    "ViewProfile",                                              
    "{username}",                           
    new { controller = "User", action = "ViewProfile" },
    // new { username = "\w+" } // consider using a username regex here
);

请注意,您需要更新controlleraction值以匹配您的应用。 ViewProfile操作应如下所示:

public ActionResult ViewProfile(string username) { }

请记住,上述路线非常贪婪,您必须确保应用程序中需要访问的任何其他操作都放在路径定义列表的最高位置。另请注意,如果用户应选择与您在ViewProfile路线上方定义的路线冲突的用户名,则永远无法通过有根路径访问用户的个人资料,因为其他路由将覆盖该路径。