2

みなさん、こんにちは。MVC3のルーティングとエリアに問題があります。

ルートは一致しますが、コントローラーが呼び出されることはなく、代わりに404エラーが発生します。

私は2つのプロジェクトでMVC3ソリューションを設定しました:

  • 1つはメインのMVCプロジェクトです:CityServices
  • エリア用の1つ:CityServices.Demo

ProjectSetup

私の地域では、次のルートを登録しています。

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のallowgetを設定する必要があると思います。

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