大家好,我对 MVC3 路由和区域有疑问:
我的路线匹配但从未调用控制器,而是收到 404 错误。
我已经设置了一个带有 2 个项目的 MVC3 解决方案:
- 一是主力MVC项目:CityServices
- 一个区域:CityServices.Demo
在我所在的地区,我注册了以下路线:
public class TestAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Test";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Test_default",
"Test/{controller}/{action}",
new { controller = "Stuff", action = "ListAll" }
);
}
}
StuffController.cs 的内容:
public class StuffController : Controller
{
public ActionResult ListAll()
{
List<Stuff> lstStuff = new List<Stuff>
{
new Stuff()
{
Id = 0,
Name = "HEeey",
Value = 10.456f
},
new Stuff()
{
Id = 1,
Name = "Beeee",
Value = 456789.47879999f
},
new Stuff()
{
Id = 2,
Name = "HooAAaoo",
Value = 0f
}
};
return Json(lstStuff);
}
}
我在主项目中注册区域:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
//RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
我的路线匹配:http://host/Test 但我总是收到 404 错误。
有任何想法吗?
谢谢, - 杰里米
编辑:这是路线匹配的证明:
找到解决方案
所以总结一下。 我的 AreaRegistration 继承类与我的控制器不在同一个命名空间中。 由于我没有任何视图(它只是一个安静的 websvc),我不必使用 MvcContribs,当您在与主站点不同的项目中拥有视图和控制器时,这似乎很有用。
如果您解决这个问题,希望这会有所帮助;)