Как перенаправить страницу .aspx в проект asp.net mvc 3?

У меня есть страница ASPX по следующему пути:

<code>Areas/Management/Views/Ticket/Report.aspx
</code>

Я хочу направить это по следующему пути в моем браузере:

<code>http://localhost/Reports/Tickets
</code>

Как я могу это сделать?

Я пытаюсь это:

<code>routes.MapRoute(
    "Tickets", // Route name
    "Areas/Management/Views/Ticket/Report.aspx", // Original URL
    new { controller = "Reports", action = "Tickets" } // New URL 
);
</code>

Но я получил404 ошибка.

Что я делаю не так?

Obs: я поставил это передDefault маршрут.

 Vinicius Ottoni16 апр. 2012 г., 15:46
Это страница .aspx.
 Vinicius Ottoni16 апр. 2012 г., 15:56
Я пытаюсь использовать отчеты Crystal в моем проекте asp.net mvc. И я пытаюсь использовать ReportViewer, который работает (с полным набором функций) только в веб-формах. Итак, теперь я хочу только направить страницу .aspx с ReportViewer в виде представлений mvc (без .aspx в конце URL).
 Chris Diver16 апр. 2012 г., 15:51
У вас могут быть представления .aspx, которые используют механизм просмотра веб-форм, и вы можете иметь .aspx веб-формы. Я подозреваю, что вы пытаетесь заставить гибрид веб-форм и mvc работать, но неясно (по крайней мере мне), чего вы пытаетесь достичь.
 Chris Diver16 апр. 2012 г., 15:44
Ваша страница .aspx, страница aspx веб-форм или страница механизма просмотра веб-форм mvc?

Ответы на вопрос(4)

ты делаешь это наоборот. это отображает ваш URLAreas/Management/Views/Ticket/Report.aspx к {controller = "Reports", action = "Tickets" }
что ты должен сделать вместо этого установите URL как
Reports/Tickets EDIT:- you can create a routeHandler just for routing to this .aspx page.. like this.

public class ASPXRouteHandler : IRouteHandler 
{ 
   public IHttpHandler GetHttpHandler(RequestContext requestContext) 
   { 

     return BuildManager.CreateInstanceFromVirtualPath("~/Areas/Management/Views/Ticket/Report.aspx",  typeof(Page)) as Page; 
   } 
}

Затем вы можете добавить свой маршрут к существующей таблице маршрутов, используя

Route customRoute = new Route("Reports/Ticket",null, new ASPXRouteHandler()); 
      routes.Add(customRoute); 
 Vinicius Ottoni16 апр. 2012 г., 16:23
Что я должен положить вdefaults? И вnew CustomRouteHandler() ты хочешь иметь в видуnew ASPXRouteHandler(), право?
 Vinicius Ottoni16 апр. 2012 г., 15:46
 16 апр. 2012 г., 15:48
Вам придется создать обработчик маршрута. В настоящее время URL-адрес сопоставляется с отчетами / билетами, которые, как правило, существуют, и, следовательно, вы получаете 404. Попробуйте вернуть строку из & quot; Отчеты / билеты & quot; и посмотрим, где ты не прав
 Vinicius Ottoni16 апр. 2012 г., 16:28
Когда я запускаю проект, браузер перенаправляет на следующий URL & quot;localhost:37538/Reports/…& Quot ;. Оо

Если вы пытаетесь использовать веб-формы в проекте MVC, я бы переместил ваш .aspx из папки представлений, так как это на самом деле не представление, а что-то вроде WebForms / Tickets / Report.aspx.

В веб-формах вы отображаете маршрут, вызываяMapPageRoute метод.

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("Tickets", "Reports/Tickets", "~/WebForms/Tickets/Report.aspx");
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });

Вам нужно будет указать это перед маршрутом MVC по умолчанию.

 Vinicius Ottoni16 апр. 2012 г., 16:31
Я положил это сразу послеroutes.IgnoreRoute("{resource}.axd/{*pathInfo}") и я получил тот же URL. знак равно
 16 апр. 2012 г., 16:35
Я только что попробовал это в новом проекте MVC, и это прекрасно работает для меня. Вы кладете/Reports/Tickets прямо в браузере или нажав на ссылку на другой странице?
 16 апр. 2012 г., 16:28
Это соответствует маршруту по умолчанию в предположении, строка выше должна быть сразу послеroutes.IgnoreRoute("{resource}.axd/{*pathInfo}") линия
 Vinicius Ottoni16 апр. 2012 г., 16:19
Когда я запускаю проект, браузер перенаправляет на следующий URL & quot;localhost:37538/Reports/…& Quot ;. Оо
 09 мая 2015 г., 09:53
Спасибо за ваше предложение.
Решение Вопроса

Solved! Таким образом, нам нужно добавить маршрутное ограничение в маршрут веб-форм, чтобы он отслеживал только входящие маршруты, а не генерацию исходящих маршрутов.

Добавьте следующий класс в ваш проект (либо в новом файле, либо в нижней части файла global.asax.cs):

public class MyCustomConstaint : IRouteConstraint{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection){
        return routeDirection == RouteDirection.IncomingRequest;
    }
}

Затем измените маршрут Билеты на следующий:

routes.MapPageRoute(
    "Tickets",
    "Reports/Tickets",
    "~/WebForms/Reports/Tickets.aspx",
    true, null, 
    new RouteValueDictionary { { "outgoing", new MyCustomConstaint() } }
);
 08 сент. 2017 г., 18:35
Мои друзья называют меня Jabber: D, ха-ха, на самом деле я иду по TJ.
 Vinicius Ottoni22 авг. 2017 г., 15:42
Я Vecthor. @JabberwockyDecompiler
 22 авг. 2017 г., 21:42
Хм, не знаю, зачем я это сказал, ты сменил имя?
 02 апр. 2013 г., 20:23
Спасибо CodeHobo за это решение.Reference
 Vinicius Ottoni22 авг. 2017 г., 21:52
Я сделал тот же вопрос там, поэтому, с ответом CodeHobo, я поставил здесь. "I" m Vecthor " там. Это только псевдоним, кодовое имя, что-то в этом роде ^^.

если вы оставите маршрутизацию по умолчанию при создании проекта asp.net

public class ReportsController : Controller
{
        public ActionResult Ticket()
        {
            return View();
        }        
}

это должно сделать свое дело. Маршрутизация в asp.net mvc означает, что вы не ссылаетесь непосредственно на.aspx but to Actions (methods) that in turn return an appropriate view (.aspx)

 Vinicius Ottoni16 апр. 2012 г., 15:57
Но с этим URL (когда я вернусь на страницу .aspx) будет иметь .aspx в конце, не так ли?
 16 апр. 2012 г., 16:00
Нет, не будет. Вы действительно проверили это, (голосуя против меня)? Я действительно исправил код, чтобы он вернулсяlocalhost/Reports/Tickets
 Vinicius Ottoni16 апр. 2012 г., 16:20
Я видел это. Страница работает (я тестировал в другом проекте), моя проблема сейчас только в том, чтобы перенаправить ее в проект asp.net mvc.
 16 апр. 2012 г., 16:17
если вы пытаетесь использовать отчеты Crystal, то вы должны проверить этот ответstackoverflow.com/questions/348785/…
 16 апр. 2012 г., 16:28
Действительно ли ваша проблема в MVC, из того, что я собрал из ваших предыдущих комментариев, у вас есть веб-форма, выполняющая отображение, так что, возможно, вам нужен модуль перезаписи URL-адреса IIS для этой конкретной страницы.learn.iis.net/page.aspx/461/… или у вас есть контроллер для обработки запроса перед отправкой на ваш взгляд?

Ваш ответ на вопрос