ASP.NET MVC5 - 顺序ID路由问题:当ID超过1个字符时出现404错误?

时间:2014-07-16 06:25:10

标签: c# asp.net asp.net-mvc-5 asp.net-mvc-routing unique-id

我有一点问题,我假设是我的路由配置。以下是我的情况:

场合

我有一个页面列出了附加到实体的员工。从实体页面,他们可以添加新员工。一旦添加了员工,就可以点击它们以获得有关员工的深入信息。

创建和进一步的信息工作正常,员工被创建并且他们的ID正常增加。

问题

创建员工并为其分配一个超过1个字符的ID(在10个以上的员工中或当ASP.NET决定跳转ID大约一千个左右时),特定员工的详细信息视图为404并且只显示:

"您要查找的资源已被删除,名称已更改或暂时无法使用。"

0-9范围内的ID似乎没有任何问题,但是一旦ID超过1个字符(比如说10),就会出现问题。

RouteConfig.cs

         routes.MapRoute(
             "EmployeeDetails",
             "{controller}/{id}-{Title}/{action}/{eid}",
             new { controller = "Farm", action = "EmployeeDetails", id = UrlParameter.Optional, title = UrlParameter.Optional, eid = UrlParameter.Optional},
             new { id = @"\d+", eid = @"\d" }
         );

FarmsController.cs

        public ActionResult Employee(int id = -1, int eid = -1)
        {

        if(id == -1 || eid == -1){
            RedirectToAction("Index","Home");
        }
        Farm f = db.Farms.Find(id);
        ViewBag.FarmName = f.Name;
        ViewBag.FarmUrl = f.getLink(true);
        Worker w = db.Workers.Find(eid);
        w.TimeSheets = w.TimeSheets.OrderByDescending(m => m.TimeSheetID).ToList();

        return View(w);
    }

感谢先进的任何帮助,如果我还没有提供所有相关信息,请道歉。第一次海报,如果您需要了解其他任何内容,请告诉我。

干杯

1 个答案:

答案 0 :(得分:0)

你的约束应该是这样的:

new { id = @"\d+", eid = @"\d+" }

目前,您正在使用正则表达式\ d作为eid字段,这意味着只有单个符号