0

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

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}),它没有显示我映射的路线

4

1 回答 1

0

原来我在错误的位置添加了 RegisterRoutes 方法,我认为我必须在 Global.asax 中包含该方法,我猜在 MVC4 之前 Global.asax 是正确的位置,但是,在 MVC4 上我必须映射路线使用位于 /App_Start/RouteConfig.cs 中的文件

于 2013-07-26T21:47:32.673 回答