我正在尝试按如下方式创建静态路由:
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返回
我从http://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-Application安装了RouteDebugger,它只显示来自MVC({resource} .axd / {* pathInfo}和{controller} / {action} / {id})的“基本”路由,它没有显示我映射的路线
答案 0 :(得分:0)
事实证明我在错误的位置添加了RegisterRoutes方法,我认为我必须在Global.asax中包含该方法,我想在MVC4之前Global.asax是正确的位置,但是,在MVC4上我必须使用位于/App_Start/RouteConfig.cs
中的文件映射路由