MVC3-маршрутизация с WebForms

У меня есть решение, использующее WebForms .Net 4.0. Я планирую использовать MVC3 в том же решении. Я следил за блогом Скотта Хансельмана , и дела пошли полным ходом.

Должен признать, что я новичок в этом. Однако, похоже, мне не хватает большой части того, как маршруты действительно работают в отношении пространств имен.

В настоящее время наше решение имеет следующее:

WebApplicatin: 
  Accounting
      Receivables
         ReceivablesGrid.aspx
         ReceivableForm.aspx
      Payables
        PayablesGrid.aspx
        PayablesForm
 ..etc.

Итак, вы можете запросить страницу, используя

Domain/Accounting/Receivables/ReceivablesGrid.aspx
Domain/Accounting/Receivables/ReceivableForm.aspx?Key=1
Domain/Accounting/Payables/PayablesGrid.aspx
Domain/Accounting/Payables/PayablesForm.aspx?Key=1

....

Я планирую добавить еще один уровень, чтобы он напоминал MVC.

WebApplicatin: 
      Accounting
          Receivables
             ReceivablesGrid.aspx
             ReceivableForm.aspx
             Mobile
              Controllers
                ReceivableConroller.cs
              Models
              Views
                Receivables
                   Index
                   Update
                   Edit
                   Create
          Payables
            PayablesGrid.aspx
            PayablesForm
            Mobile
              Controllers
                PayablesConroller.cs
              Models
              Views
                Payables
                   Index
                   Update
                   Edit
                   Create

     ..etc.

Конечно, это не настоящие имена . Однако я старался сделать это как можно ближе к моей ситуации. К сожалению, было бы лучше, если бы я последовал этому, потому что я мог бы использовать некоторую логику, которая могла бы быть добавлена ​​в то же пространство имен. Более того, создание папок в корне, напоминающих контроллеры, представления, модели, не будет работать с моим решением.

В Global.asax я добавил маршрут как таковой:

routes.MapRoute(
      "AccountingReceivablesMobile", // Route name
      "Accounting/Receivables/Mobile/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional });

routes.MapRoute(
      "AccountingPayablesMobile", // Route name
      "Accounting/Payables/Mobile/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional });

Еще одно решение, которое я в итоге попробовал, - это расширение RazorViewEngine. В конструкторе нового движка я установил два следующих свойства:

base.ViewLocationFormats = new string[] { "~/Accounting/Receivables/Mobile/Views/{1}/{0}.cshtml",
"~/Accounting/Payables/Mobile/Views/{1}/{0}.cshtml"
 };

base.MasterLocationFormats = new[] { "~/Views/Shared/{0}.cshtml"}. 

это работало довольно хорошо. Однако я просто чувствую, что добавление этих маршрутов не очень масштабируемо, как добавление веб-формы. Моя проблема в том, что я действительно не Я не хочу добавлять маршрут для каждого возможного маршрута. Это означает, что при добавлении нового представления у меня будет другой маршрут или запись в массив. Итак, как я могу сделать это проще? Что я делаю не так? Я посмотрел на области, однако, похоже, это заставляет создать папку областей и поместить в нее.

Спасибо,

5
задан Sam 1 May 2011 в 02:34
поделиться