大家好我对MVC3路由和区域有问题:
我的路线匹配,但永远不会调用控制器,而是出现404错误。
我已经为2个项目设置了MVC3解决方案:
在我的区域,我注册了以下路线:
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,当你在不同项目中拥有视图和控制器而不是主站点时,它似乎很有用。
希望如果你提出这个问题,这会有所帮助;)
答案 0 :(得分:4)
除非您使用的是MvcContribs便携式区域或其他自定义实现,否则您的区域将在默认情况下无法正常工作
答案 1 :(得分:0)
我认为你需要为json设置allow get:
return Json(data, JsonRequestBehavior.AllowGet)