加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC 4路由 – controller / id与control

发布时间:2020-12-15 23:45:51 所属栏目:asp.Net 来源:网络整理
导读:我试图添加一个路由到默认路由,所以我有两个url工作: http://www.mywebsite.com/users/create http://www.mywebsite.com/users/1 这将使第一条路线工作: routes.MapRoute( name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller
我试图添加一个路由到默认路由,所以我有两个url工作:

> http://www.mywebsite.com/users/create
> http://www.mywebsite.com/users/1

这将使第一条路线工作:

routes.MapRoute(
     name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "users",action = "Index",id = UrlParameter.Optional }
);

但是,第二条路线不会明显.

这将使第二条路线工作,但将打破第一条路线:

routes.MapRoute(
     name: "Book",url: "books/{id}",action = "Details" }
);

如何组合两个路由配置,使两个URL工作?
如果在SO上已经有这样的问题,我很抱歉,我找不到任何东西.

解决方法

关键是要先提出更具体的路线.所以把“书”的路线放在第一位.编辑我想你还需要一个约束,只允许数字匹配此路由的“id”部分.结束编辑
routes.MapRoute(
    name: "Book",action = "Details" },constraints: new { id = @"d+" }
);

routes.MapRoute(
    name: "Default",id = UrlParameter.Optional }
);

并确保您的“详细信息”操作中的“id”参数是一个int:

// "users" controller
public ActionResult books(int id)
{
    // ...
}

这样,“图书”路线将不会捕获像/ users / create这样的网址(由于第二个参数被重新定义为一个数字),所以将会落在下一个(“默认”)路由.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读