静态路由返回404?

时间:2013-07-26 19:46:15

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

我正在尝试按如下方式创建静态路由:

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        name: "Hire",
        url: "Hire/{gender}",
        defaults: new { controller = "Hire", action = "Index" }
    );
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

但是,当我尝试访问/ Hire / Female时,例如,IIS会抛出404错误,因为我正在阅读有关路由的信息,我注意到路由通常写为{controller} / {action} / {something},是吗我的路线上必须有{controller}和{action}吗?

这是控制器的代码:

public class HireController : Controller
{
    [HttpGet]
    public ActionResult Index(string gender)
    {
        return View();
    }
}

我有一个名为/Views/Hire/Index.cshtml的文件

我想要实现的是将来自/ Hire / Male和/ Hire / Female的请求路由到我的HireController的Index操作但是我感觉我忘了什么,因为我尝试过不同的方式并且总是有一个404返回


更新1

我从http://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-Application安装了RouteDebugger,它只显示来自MVC({resource} .axd / {* pathInfo}和{controller} / {action} / {id})的“基本”路由,它没有显示我映射的路线

1 个答案:

答案 0 :(得分:0)

事实证明我在错误的位置添加了RegisterRoutes方法,我认为我必须在Global.asax中包含该方法,我想在MVC4之前Global.asax是正确的位置,但是,在MVC4上我必须使用位于/App_Start/RouteConfig.cs

中的文件映射路由