【问题标题】:Asp.net mvc Details methodAsp.net mvc 详细方法
【发布时间】:2011-08-16 17:28:27
【问题描述】:

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

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 类型的 url。 我知道我可以通过注册这样的路由来实现(在默认路由之前)

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

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

问候

帕米德

【问题讨论】:

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


    【解决方案1】:

    您需要对路由的 id 参数进行约束:

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

    那么你的其他路线不会受到影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多