До сих пор я использовал 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 ведет себя так, как я ожидал.