asp.net-mvc - 在 ASP.Net MVC 路由中,如何路由 2 个看起来相同但类型不同的不同路径?

标签 asp.net-mvc routes

在 ASP.Net MVC 中,我想要 2 条不同的路由:

http://mysite.com/foo/12345

http://mysite.com/foo/bar

在 Foo 类中,我有 2 个返回 ActionResult 的方法

public ActionResult DetailsById(int id)
{
. . . some code
}

public ActionResult DetailsByName(string name)
{
. . . some code
}

如何设置 2 条路由,以便如果参数是 int,则转到 DetailsById,否则转到 DetailsByName?

最佳答案

您可以对第一条路线使用路线约束。

routes.MapRoute("DetailsById",
                "foo/{id}",
                new { controller = "foo", action = "DetailsById" },
                new { id = @"\d+" } // Parameter constraints
            );

routes.MapRoute("DetailsByName",
                "foo/{id}",
                new { controller = "foo", action = "DetailsByName" }
            );

第一个路由将只接受与正则表达式匹配的 ID(只接受数字)。如果它不匹配第一条路线,它将转到第二条。

关于asp.net-mvc - 在 ASP.Net MVC 路由中,如何路由 2 个看起来相同但类型不同的不同路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149672/

相关文章:

asp.net-mvc - 操作链接按钮

javascript - 需要帮助理解 Angular ui-router 专门将 mongodb 数据从一个状态传递到另一个状态吗?

routes - 没有 Controller 标签的WebAPI路由

angularjs - http ://localhost/wp-json/wp/v2/posts in wordpress using REST API V2 上的 404

ruby-on-rails - 添加 Admin 命名空间时的路由错误

laravel - 将 Laravel 从 5.0.33 升级到 5.1 LTS 时获取 "Invalid route action"

asp.net-mvc - 使用 phalanger 作为 MVC 应用程序的 View 部分

c# - 在网页中选择多个文件上传

javascript - 无法单击表格头元素

asp.net-mvc - 您可以将 Orchard CMS 与 Entity Framework 5 一起使用而不是 NHibernate 吗?