当我使用以下路线导航到以下网址时出现404错误:
http://localhost:53999/properties/
但是,以下所有内容都已正确路由到我的控制器中的 List 操作:
http://localhost:53999/properties/usa/new-york/manhattan/12
http://localhost:53999/properties/usa/new-york/manhattan
http://localhost:53999/properties/usa/new-york
http://localhost:53999/properties/usa
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//properties
routes.MapRoute(
"Properties",
"Properties/{country}/{state}/{city}/{id}",
new
{
controller = "Properties",
action = "List",
country = UrlParameter.Optional,
state = UrlParameter.Optional,
city = UrlParameter.Optional,
id = UrlParameter.Optional
}
);
//default
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
在PropertiesController.cs中:
public ActionResult List(string country, string state, string city, string id)
{
return View();
}
任何人都知道我错过了什么?看起来应该只是去默认操作,但显然不是......
答案 0 :(得分:2)
您还可以尝试以下操作(因为您使用的是MVC 1.0)。
在当前路线上添加路线 :
routes.MapRoute(
"Properties", "Properties", new { controller = "Properties", action = "List"}
);
并向控制器添加一个重载的ActionResult List()
方法:
public ActionResult List()
{
return View();
}
答案 1 :(得分:1)
你有没有试过Phil Haack的这个Route Debugger?它可以帮助您确定发生了什么。
答案 2 :(得分:0)
答案 3 :(得分:0)
Brad Wilson在这篇文章中回答:http://forums.asp.net/p/1527697/3690295.aspx#3690295
“不,问题是您的磁盘上有一个Properties文件夹,因此它通过标准调度程序(而非MVC)进行调度,然后进行404调度,因为它无法找到默认文档。”