「一般的な」ルート構造と追加の「翻訳」エリアを備えたサイトがあります。したがって、トップレベルでは、次のようなものがあります。
- /
- / About( "generic")
- /翻訳(エリア)
翻訳エリア内には、次のものがあります。
- / Translate / Word(WordController、インデックスアクション)
- / Translate / Word / Add(WordController、アクションの追加)
- / Translate / Word / Improve(WordController、Improveアクション)
これらすべてが機能します。
ただし、既存の構造にさらにコントローラーを追加するとすぐに、たとえば。意味 ...
- / Translate / Definition(DefinitionController、インデックスアクション)
- / Translate / Definition / Add(DefinitionController、アクションの追加)
または発音..。
- / Translate / Pronunciation(PronunciationController、インデックスアクション)
- / Translate / 発音/追加(PronunciationController、アクションの追加)
私が得るのは404だけです。
私の地域のルーティング構成は次のとおりです。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Translate_direct",
"Translate/{controller}/{action}",
new { action = "Index", controller = "Default", }
);
context.MapRoute(
"Translate_default",
"Translate/{toLanguageCode}/{query}/{fromLanguageCode}/{controller}/{section}/{action}/{id}",
new { action = "Index", controller="Default", id = UrlParameter.Optional, section=UrlParameter.Optional }
);
}
Phil HaackのRouteDebuggerをインストールしましたが、次の結果が得られました。
したがって、コントローラーとアクションに一致しているように見えますが、404を取得します。
完全性と保証のために、私の「MVC」ファイル構造も示されています。
私は明らかに何か明白なものを見逃していますが、何がわからないのですか...?
アップデート:
私の名前空間はどういうわけか関係しているようです。
TranslateAreaRegistrationクラスの名前空間はTaggloo.Web.Client.Areas.Translateでしたが、PronunciationControllerの名前空間は*Taggloo.Web。**Mvc。**Client.Areas.Translate.Controllers*でした。
2つが異なる原因となった名前空間のエラー(TranslateAreRegistrationクラスもTaggloo.Web.Mvc.Client.Areas.Translate名前空間にある必要があります)が問題のようです。両方をTaggloo.Web.Mvc....にしてみましたが、うまくいきませんでした。惜しみなく両方をTaggloo.Web.Client...に設定しましたが、現在は機能しています。
したがって、解決策や回避策ではありません。これを検討しているにもかかわらず、私はまだ理由について賢明ではありません。