Asp.net mvc详细信息方法

时间:2011-05-02 03:17:13

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

我正在开发一个项目,我使用了默认路由

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

我有一个用户控制器和方法,如索引,创建和详细信息

我不想创建像http://mysite/users/details/111/somename这样的链接 相反,我想创建http://mysite/users/111/somename 像stackoverflow类的网址。 我知道我可以通过注册这样的路线(在默认路线之前)来实现

routes.MapRoute(
            "UsersDetails",                                              // Route name
            "Users/{id}/{name}",                           // URL with parameters
            new { controller = "Users", action = "Details", id = UrlParameter.Optional, name = UrlParameter.Optional }  // Parameter defaults
        );

然后我的所有其他网址开始创建问题。例如,如果我有网址 http://somesite/users/registersuccess

是否存在解决此问题的方法,或者我应该注册所有网址。

此致

成员Parminder

1 个答案:

答案 0 :(得分:0)

您的路线的id参数需要约束:

routes.MapRoute(
    "UsersDetails",
    "Users/{id}/{name}",
    new { controller = "Users", action = "Details", id = UrlParameter.Optional, name = UrlParameter.Optional }, 
    new { id="\d+" }
    );

然后你的其他路线不会受到影响。