2

大家好,我对 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,当您在与主站点不同的项目中拥有视图和控制器时,这似乎很有用。

如果您解决这个问题,希望这会有所帮助;)

4

2 回答 2

4

您在另一个项目中拥有您的区域,除非您使用 MvcContribs 可移植区域或其他自定义实现,否则默认情况下该区域将无法工作

于 2011-11-24T10:55:23.053 回答
0

我认为您需要为 json 设置允许获取:

return Json(data, JsonRequestBehavior.AllowGet)
于 2011-11-24T10:55:39.017 回答