【发布时间】:2013-07-27 05:17:20
【问题描述】:
我正在尝试创建如下静态路由:
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}),它没有t 显示我映射的路线
【问题讨论】:
-
您的路线设置正确。当路由值中提到它们时,您不需要提供控制器和操作名称作为 url 的一部分。您是否以任何方式尝试使用 POST 访问 /Hire/Female
-
@ParvSharma 我直接在浏览器中输入 URL,我也尝试删除 [HttpGet] 但仍然不行
-
确保网站根目录下没有任何名为 Hire 的文件夹
-
@ParvSharma 谢谢我已经检查过了,唯一名为“Hire”的文件夹在“Controllers”文件夹中,我在相关问题中看到一个人有一个非常相似的问题,他说他重新-创建了控制器,一切正常,但这对我也不起作用,我不需要在 web.config 上添加配置来“启用”路由吗?
-
是的。尝试重新编译项目
标签: asp.net asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-routing