2012-02-20 17 views
0

私はASP.NET MVCアプリケーションを開発中です。何らかの理由で、私がルーティングを理解していると思う度に、私は理解していない何かをポップアップさせます。現在、私は理解できないような2つのルートを持っています。私のディレクトリ構造が私のglobal.asax.csファイルでは、次のMVCルーティングの誤解

- Views 
    - Internal 
    - Profile 
     - Index.cshtml 
    - Input 
     - Page1.cshtml 

のように見える、私は以下のマッピング追加しました:MyControllerで

routes.MapRoute(
    "UserProfileInfo", 
    "{controller}/profile", 
    new { controller = "Internal", action = "UserProfileInfo" } 
); 


    routes.MapRoute(
    "Page1", 
    "{controller}/input/page1", 
    new { controller = "Internal", action = "Page1" } 
); 

を、私は次のようしている:

public ActionResult UserProfileInfo() 
    { 
    return View("~/Views/internal/profile/Index.cshtml"); 
    } 

    public ActionResult Page1() 
    { 
    return View("~/Views/internal/input/Page1.cshtml"); 
    } 

アクションを1つのコントローラに保存したい。私はすべてが正しくセットアップされていると思った。しかし、私は404を取得し続けます。私は間違って何をしていますか?

+0

404のURLはどのようなものですか? – Simon

+0

http:// localhost:[port]/internal/input/page1またはhttp:// localhost:[port]/profile/infoをパンチすると404が表示されます。http:// localhost :[ポート] /内部/ UserProfileInfoマイページが表示されます。しかし、それは私が使いたいURLではありません。 –

+0

既存のデフォルトルートを削除する必要があります。これは最初に一致する可能性があります。 – Simon

答えて

0

InternalControllerというクラスへのマッピングを作成するには、MapRouteの呼び出しでコントローラ名の「Controller」サフィックスを削除します。 Controllerサフィックスは、一致する実装を探すときにフレームワークによって追加されます。例:

routes.MapRoute( 
    "UserProfileInfo", 
    "{controller}/profile", 
    new { controller = "Internal", action = "UserProfileInfo" } 
); 
+0

であなたのために追加された{controller}/{action}/{id}ルートは、実際のコードにはありません。この投稿にある私は投稿を更新しました。しかし、これを指摘していただきありがとうございます。 –