みなさん、こんにちは。MVC3のルーティングとエリアに問題があります。
ルートは一致しますが、コントローラーが呼び出されることはなく、代わりに404エラーが発生します。
私は2つのプロジェクトでMVC3ソリューションを設定しました:
- 1つはメインのMVCプロジェクトです:CityServices
- エリア用の1つ: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を使用する必要はありませんでした。
この質問にたどり着いたら、これがお役に立てば幸いです;)