Попытка перенаправить параметры, чтобы перехватить все действия индекса на домашнем контроллере. - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь записать параметры в домашний контроллер mvc по умолчанию, который до сих пор мне не нужно было делать, так как angular заботится обо всех видах / маршрутизации.

Причина этого в том, что я использовал angular для установки метаданных для SEO. Это не работает, так как угловая является чисто клиентской стороной. SEO должен прийти с сервера.

Мой маршрут к домашнему контроллеру - это просто уловка, так что он должен оставаться уловом, но также получать дополнительные параметры

routes.MapRoute(
            name: "Default",
            url: "{*.}",
            defaults: new { controller = "Home", action = "Index" }
        );

Таким образом, я могу захватить что-то в URL, например, «продукт»

public ActionResult Index(string product = "")
    {

        var meta = new MetaData
        {
            Title = "Test",
            Description = "Desc1",
            Keywords = ""
        };

        return View("Index",meta);
    }

Я не могу использовать что-то вроде

url: "{controller}/{action}/{id}",

Потому что тогда он будет ожидать представления / контроллеры для других моих страниц, о которых заботится angular.

Так что мне нужен маршрут по умолчанию, который будет использовать домашний контроллер всякий раз, когда URL-адрес подобен этому

mywebsitename.com / шоумены

Я пытался

 url: "*./{product}",

но это неверно. Я также изменил маршрут на

 routes.MapRoute(
            name: "Default",
            url: "{*.}",
            defaults: new { controller = "Home", action = "Index" , product = UrlParameter.Optional}
        );

Но это не работает.

1 Ответ

0 голосов
/ 16 мая 2019

Я удалил перехват всех маршрутов и просто использовал такой по умолчанию, как этот, для домашней страницы.

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

Без перехвата всего мне пришлось добавить довольно много маршрутов для других страниц, подобных этой * 1004.*

routes.MapRoute(
            name: "LandingPage",
            url: "landingpage/{product}",
            defaults: new
            {
                controller = "Home",
                action = "Landing",
                product = UrlParameter.Optional
            }
       );

Так что теперь я могу захватить продукт и отправить метаданные в _Layout, используя то же представление индекса.Тем временем угловой маршрут все еще делает то, что делал раньше.

Все, что получает кавычку / пароль, все используют общий маршрут, который передается действию индекса домашнего контроллера, чтобы обновить ту же модель на _Layout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...