ASP.NET MVC несколько URL-адресов, указывающих на одно и то же действие

Как мне сопоставить несколько URL-адресов с одним и тем же действием в asp.net mvc

У меня есть:

string url1 = "Help/Me";
string url2 = "Help/Me/Now";
string url3 = "Help/Polemus";
string url1 = "Help/Polemus/Tomorow";

В моем файле global.asax.cs я хочу отобразить все эти URL-адреса на следующее action:

public class PageController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        return View();
    }
}
6
задан stoic 27 August 2010 в 13:43
поделиться

2 ответа

Добавьте следующую строку в таблицу маршрутизации:

routes.MapRoute("RouteName", "Help/{Thing}/{OtherThing}", new { controller = "Page" });

EDIT:

foreach(string url in urls)
    routes.MapRoute("RouteName-" + url, url, new { controller = "Page", action = "Index" });
9
ответ дан 8 December 2019 в 02:14
поделиться

Вы можете просто добавлять маршруты в таблицу маршрутов по мере необходимости, как и любой другой маршрут. Просто дайте им уникальные имена, жестко закодированные URL-адреса и укажите им один и тот же контроллер/действие. Это будет работать нормально.

Если вы используете сопоставление с образцом вместо жестко закодированных URL-адресов, просто убедитесь, что все ваши маршруты указаны в правильном порядке, чтобы правильный был выбран из списка. Таким образом, /Help/Me должен появиться перед /Help/{Page}, если жестко запрограммированный маршрут ведет на страницу, отличную от той, которая соответствует шаблону.Если вы поместите /help/{page} в таблицу маршрутов 1st, это будет соответствовать /help/me, и ваше жестко запрограммированное именованное действие для этого маршрута никогда не сработает.

Кстати, если это общедоступный сайт и SEO важна, будьте осторожны, если у вас есть несколько URL-адресов, возвращающих одни и те же данные, они будут помечены как повторяющиеся. Если это так, то используйте тег Canonical, это дает весь рейтинг страницы со всех URL-адресов, которые ведут на эту единственную страницу, к той, которую вы называете, и устраняет проблему дублирования контента для вас.

3
ответ дан 8 December 2019 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: