Кажется, это должно быть легко, но по какой-то причине мне не повезло.Я перевожу существующее приложение WebForms в MVC, поэтому мне нужно, чтобы пока корень сайта указывал на мои существующие страницы aspx и применял маршрутизацию только к именованным маршрутам.Вот что у меня есть:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
RouteTable.Routes.Add(
"Root",
new Route("", new DefaultRouteHandler())
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Calendar2", action = "Index", id = "" } // Parameter defaults
);
}
Таким образом, страницы aspx должны игнорироваться, и корневой обработчик по умолчанию должен обрабатываться этим обработчиком:
public class DefaultRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(
"~/Dashboard/default.aspx", typeof(Page)) as IHttpHandler;
}
}
Это работает нормально, ноВ результате YPOD дает мне следующее:
Было найдено несколько элементов управления с одинаковым идентификатором '__Page'.Трассировка требует, чтобы элементы управления имели уникальные идентификаторы.
, что, по-видимому, подразумевает, что страница каким-то образом визуализируется дважды.Если я просто введу URL-адрес непосредственно на страницу панели инструментов, он будет работать нормально (без маршрутизации и без ошибок).Я понятия не имею, почему код обработчика будет делать что-то по-другому.
Итог - я бы хотел просто перенаправить путь к корневому URL-адресу в aspx по своему выбору - может кто-нибудь пролить свет?