2016-08-08 13 views
0

複数の学生用プログラムの複数のテーブルにデータを格納するASP MVC 1を使用して、単純なCRUDアプリケーションを開発しています。そうするには、各プログラム、テーブル、およびそれらのアクションに対応するためにURLをどのように構造化するかを考えようとしています。例えばASP MVC 1フォルダとサブフォルダ用のカスタムルーティング

、私が達成しようとしている何かがある:

site.com/StudProg1/Participant/Create

プログラム1学生のための参加者テーブルのエントリを挿入するためのURLになりますsite.com/StudProg2/Course/これに対応するためにカスタムルートを作成するために私の試みで留学生プログラムのために2

コーステーブルのインデックスページのURLとなり、私のGlobal.asax.csファイルのように立っています以下:

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "StudProg1", 
      "StudProg1/{pageName}/{action}", 
      new { controller = "StudProg1", pageName="Index", action = "Index" } 
     ); 

     routes.MapRoute(
      "StudProg2", 
      "StudProg2/{pageName}/{action}", 
      new { controller = "StudProg2", pageName="Index", action = "Index" } 
     ); 

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

ここで、pageNameはテーブル名とします。

上記の構造は、私が目指している出力を返しません(つまり、常にStudProgのインデックスページを指しています)。

また、私のファイルディレクトリは、次のような構造になっています。

 
Views 
    StudProg1 
     Index 
     Participant 
      Index 
      Create 
    StudProg2 
     Index 
     Courses 
      Index 
      Create 

など

私の質問は、私は正確に私が望むURLの構造を達成するために、私のルートをどのように改善できるか、です。さらに、Microsoft ASP.NET Developer Networkサイトに加えて、カスタムルートに関するチュートリアルもありますか?

答えて

0

学生用プログラム(StudProg1、StudProg2など)ごとにコントローラを作成しないでください。それをパラメータとして受け入れることができます。

Particiantの場合は1つ、Courseの場合は1つだけのcontrolellersが必要です。

RouteConfigのRegisterRoutesメソッドでは、一般的なデフォルトルートの前に2つの特定のルートを指定します。

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute("part","{studentProgram}/Participant/{action}", 
     new { controller = "Participant", action = "Index" } 
    ); 

    routes.MapRoute("course", "{studentProgram}/Course/{action}", 
         new { controller = "Course", action = "Index" } 
    ); 

    routes.MapRoute("Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional });   

} 
関連する問題