ASP.NET MVC 3 RC2 ошибка? - PullRequest
       6

ASP.NET MVC 3 RC2 ошибка?

0 голосов
/ 23 декабря 2010

До сих пор я использовал ASP.NET MVC 3 BETA.До обновления до версии RC2 все работало нормально.Конечно, я прочитал статью Скотта о RC2 .

Моя проблема заключается в следующем.В основном у меня есть 2 контроллера:

   public class DynamicPageController : Controller
   {          
      public ActionResult Redirect(string resource, int? pageNumber, int? id)
      {       
      }
   }

   public class SystemController : Controller
   {
      public ActionResult Index()
      {
      }
   }

В Globals.asax у меня есть такие маршруты:

   public static void RegisterRoutes(RouteCollection routes)
   {
         routes.MapRoute(
            "SystemRoute",
            "System/{action}",
            new { controller = "System", action = "Index" }
            );

         routes.MapRoute(
            "PageRoute",
            "{resource}/{id}/{pageNumber}",
            new { controller = "DynamicPage", action = "Redirect", resource = UrlParameter.Optional, pageNumber = UrlParameter.Optional, id = UrlParameter.Optional }
            );
   }

В коде у меня есть простое создание ссылки:

System.Web.Mvc.UrlHelper u = new System.Web.Mvc.UrlHelper(context);
string url = u.Action("Index", "System");

и URL-адрес "/ my_app / System" в обеих версиях (BETA и RC2)

Но код ниже (синтаксис такой же, как и выше, только контроллер иимена действий различны):

string url = u.Action("Redirect", "DynamicPage", new RouteValueDictionary(new { resource = "Home" }));

дает URL, который является нулевым в RC2.Должно быть (а на самом деле в бета-версии было) "/ my_app / Home"

Почему?Это ошибка?Как я могу создать URL для моего контроллера " DynamicPage "?

С уважением

Кстати: Откуда я могу теперь скачать ASP.NET MVC BETAверсия вместе с установщиками ASP.NET Web Pages 1.0?С момента объявления RC2 у меня проблемы с поиском упомянутых 2 инсталляторов.Обычно я обновляю свой код, но эта проблема, описанная выше, заставляет меня некоторое время оставаться в бета-версии, поскольку у меня нет времени на миграцию и тестирование всего.

ОБНОВЛЕНИЕ

Решение, которое я использовал для случая, когда у меня есть два необязательных параметра, существующих один за другим, заключается в добавлении нового PageRouteCore непосредственно перед существующим PageRoute route:

routes.MapRoute(
            "PageRouteCore",
            "{resource}",
            new {controller = "DynamicPage", action = "Redirect"}
            );

Это в основном тот же маршрут, но без дополнительных параметров.Создание URL ведет себя так, как я ожидал.

1 Ответ

4 голосов
/ 23 декабря 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...