Сделать традиционный выделенный маршрут в asp.net core

131
19 ноября 2019, 05:10

Все облазил, не могу сообразить, как сделать следующее: 1. Если человек в адресной строке пишет: mysite.ru/home/index или просто mysite.ru, то его перенаправляет на контроллер HomeController->Index. Тут все как обычно. 2. Но если человек пишет: mysite.ru/hello или что либо другое вместо hello, то ему надо вернуть просто строку. При этом надо прочесть что же написано в адресе (в данном примере написано hello).

            // Пример как я пробовал  сделать в методе Startup->Configure через Map.
            // Тут 2 минуса: не известно как получить то, что написано в маршруте (в примере это hello) и здесь придется на старте приложения задать все строки, а они могут быть любые.
            app.Map("/visexp",
            (appBuilder) => 
            {
                appBuilder.Run(async (context) =>
                {
                await context.Response.WriteAsync("строка -" + ПеременнаяСhello);
                });
            });

Пример, что должно быть: человек пишет mysite.ru - отрабатывает HomeController; Человек пишет mysite.ru/radomtext - у него обновляется страница где просто написано Строка - radomtext

Answer 1
  1. Чтобы сделать стандартный выделенный маршрут без второго слеша, то есть обращаться к контроллеру не так mysite.io/home/index, а так mysite.io/index, то в Startup.cs писать следующий роут:

        app.UseMvc(routes =>
        {
            routes.MapRoute( // роутинг на стандартный ноум контроллер всегда
                name: "default",
                template: "/{action=Index}/{id?}",
                defaults: new { controller = "Home" });
        });
    
  2. Чтобы сделать как я хотел, сохранить стандартный роутинг и одновременно на один конкретный контроллер отправлять все остальное, что не прошло по стандартному роутингу надо делать так:

            app.UseMvc(routes =>
        {
            routes.MapRoute( // почти стандартный роутинг, он автоматом на home/index не кидает.
                name: "default",
                template: "{controller}/{action}/{id?}");
            app.Run(async (context) => // если по стандартному маршруту ни чего не нашлось, то выполняется данный код
            {
                string url = context.Request.Path.Value.TrimEnd('/'); // получаем ссылку по которой перешли
                await context.Response.WriteAsync("Hi" + url);
            });
        });
    
READ ALSO
Взаимодействие между формами

Взаимодействие между формами

есть главная форма, из нее открываются все остальныеодна из них должна задавать например цвет всем другим формам

120
Представление EF c modelBuilder.Query

Представление EF c modelBuilder.Query

Подскажите какую библиотеку подключить для использования конструкцииQuery:

99
Ошибка PHP Notice: Undefined index, Trying to get property of non-object

Ошибка PHP Notice: Undefined index, Trying to get property of non-object

Делал авторизацию и регистрацию на сайте через RedBeanPHP, сохранял данные пользователя в сессии, всё работалоНо потом в другом файле у меня перестало...

135