2011-10-23 13 views
1

外部アセンブリで定義されたコントローラアクションを呼び出そうとしていますが、アプリケーションは常にリソースが見つからないと返します。コントローラは簡単ですし、次のようになります。私はそれがコントローラを見つけるdoesntのコントローラとアクションを呼び出すしようとすると、しかし外部アセンブリでMVCコントローラ/アクションを呼び出す

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },   
    new[] { "MyExternal.Controllers" } 
); 

namespace MyExternal.Controllers 
{ 
    [HandleError] 
    public class ProjAdminController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 
    } 
} 

その後、私は、オプションの名前空間を含むようにルートを更新します。私はルートデバッガをインストールし、それはルートテストに合格しますが、コントローラを見つけたりブレークポイントで停止したりしません。おそらくそれはかなり小さく見えますが、私はこれを理解できません。私の謝罪はこれがダブです。元のコードにはコントローラクラスの命名にバグがありましたが、残りのコードはこれを行う方法の例としてうまく機能します。

+1

はbinフォルダの外部アセンブリですか?あなたが試しているURLは何ですか? –

+0

これは期待通りにうまく動作しますが、直接バインドされた領域に頼らずに行う方法の良い例になります。私は誤って私のコントローラの名前をコントローラのサフィックスに付けておらず、それを慣例で見つけられませんでした。一息。しかし、ルート登録の名前空間の仕様は、リクエストハンドラがより長時間の検索に先立ってこれらの名前空間を最初に検索できるようになった場合に比べて、コントローラを大幅に高速に見つけるのに役立ちます – MikeJ

+0

エリアは必要なものではないのでわかりません何が問題なの? –

答えて

1

IMOアクション呼び出しにareaパラメータを追加する必要があります。そのコントローラの名前空間が含まれている必要があります。

+0

私はこれを試すことができますが、なぜこれがうまくいかないのか、名前空間のパラメータが何をしているのかを説明していません。 – MikeJ

+0

私のcontollerの名前は慣習ではなく、私は問題を見つけることができませんでした。 – MikeJ

関連する問題