2016-08-08 3 views
0

Я разрабатываю простое приложение CRUD с использованием ASP MVC 1, которое будет хранить данные по нескольким таблицам для нескольких студенческих программ. При этом я пытаюсь понять, как структурировать URL-адрес для размещения каждой программы, ее таблиц и их действий.ASP MVC 1 Пользовательская маршрутизация для папок и подпапок

Например, что-то я пытаюсь достичь:

site.com/StudProg1/Participant/Create станет URL для вставки записи для участника Стол для студента Программа 1

site.com/StudProg2/Course/ будет URL для страницы индекса для таблицы курса для студентов по программе 2

в моей попытке создать собственные маршруты, чтобы учесть это, мой файл 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 
     ); 
    } 
} 

В тех случаях, когда имя_папки должно быть именем таблицы.

Неудивительно, что указанная выше структура не возвращает результат, на который я нацеливаюсь (т. Е. Всегда указывает на страницу индекса для StudProg).

Кроме того, мой каталог файлов структурирована как таковой:

 
Views 
    StudProg1 
     Index 
     Participant 
      Index 
      Create 
    StudProg2 
     Index 
     Courses 
      Index 
      Create 

т.д.

Мой вопрос, как я могу улучшить свои маршруты, чтобы правильно достичь структуры URL-я пожелаю. Кроме того, помимо веб-сайта разработчика Microsoft ASP.NET Developer, есть ли хорошие учебные пособия по пользовательским маршрутам?

ответ

0

Вам не следует создавать контроллер для каждой студенческой программы (StudProg1, StudProg2 и т. Д.). Вы можете принять это как параметр.

Вам нужно всего 2 controlellers, один для Particiant и один для курса.

public class ParticipantController : Controller 
{ 
    public ActionResult Index() 
    { 
     return Content("Reques for partiicpant index page if needed"); 
    } 
    public ActionResult create(string studentProgram) 
    { 
     return Content("Partiicpant create for "+studentProgram); 
    } 
} 
public class CourseController : Controller 
{ 
    public ActionResult Index() 
    { 
     return Content("Course:"); 
    } 
} 

и в методе RegisterRoutes вашего RouteConfig, задайте эти 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 });   

}