Как получить доступ к представлению сайта (mvc .net), передавая имя представления по URL? (для перенаправления на маршрут) - PullRequest
0 голосов
/ 01 ноября 2018

Позвольте мне объяснить мою проблему.

У меня есть сайт с .aspx-страницами (веб-формами), публикуемыми на сервере, например: www.mysite.com .

Несколько месяцев назад он запустил огромный цифровой маркетинговый лагерь, где наиболее важной является форма для связи, например: www.mysite.com / contact.aspx.

Теперь (забудьте о razon), проект был перенесен в проект MVC. Затем новая контактная форма принимается через www.mysite.com / contact . То есть по маршруту, а не по странице.

Мне нужен способ перенаправления с www.mysite.com / contact.aspx (ссылка отправлена ​​в кампанию) на www.mysite.com / contact в проекте MVC. Это значит: нет конфигурации сервера http или dns.

Я пытаюсь создать страницу contact.aspx . в моем проекте MVC и перенаправить на маршрут / contact , но не работает. Я предпочитаю, потому что MVC работает с маршрутом, а не с просмотром (в этом случае ASPX).

Кто-нибудь может мне помочь с любой идеей или инструкцией? Ременбер, не возможно работать над конфигурацией сервера, просто кодирование в проекте MVC.

Проект ASP.net MVC4 и фреймворк 4.5

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Можно изменить только в текущем файле RouteConfig проекта MVC для перенаправления 301 навсегда.

для этого www.mysite.com/contact.aspx используйте ниже настройки маршрута

 routes.MapRoute(
               name: "ContactOld",
               url: "Contact.aspx",
               defaults: new { controller = "Home", action = "Contact", id = UrlParameter.Optional }
           );

для этого www.mysite.com/contact используйте ниже настройки маршрута

    routes.MapRoute(
       name: "Contact",
       url: "Contact",
       defaults: new { controller = "Home", action = "Contact", id = UrlParameter.Optional }
   );
0 голосов
/ 01 ноября 2018

Мне кажется, я знаю, что ты хочешь сделать ...

Добавьте Contact.aspx в корень приложения MVC.

Затем в приведенном ниже коде добавьте вызов RedirectToRoute для события Page_Load в Contact.aspx.cs, например:

(Предполагается, что ваше новое представление Contact Razor называется «Index» и находится в контроллере «Contact»)

public partial class Contact : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.RedirectToRoute(new { controller = "Contact", action = "Index" });
    }
}

Если ваш Contact.aspx не находится в том же проекте, что и ваши контроллеры MVC, тогда вы можете попробовать обычный Response.Redirect, например:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Redirect("~/Contact/Index");
    }
...