MVC 3, сохраняющий короткий URL - PullRequest
3 голосов
/ 20 июня 2011

У меня есть приложение MVC3, в котором я хочу сохранить короткий URL. Какой лучший или чистый способ сделать это? Допустим, у меня есть два контроллера Account и Home. У меня есть все задачи, связанные с учетной записью, вход в систему, выход из системы, профиль, часто задаваемые вопросы и т. Д. В контроллере учетной записи. Все основные задачи в домашнем контроллере, такие как TaskA, TaskB и TaskC. Я ищу URL, как показано ниже:

  1. www.mydomain.com / Logon
  2. www.mydomain.com / выход
  3. www.mydomain.com / Профиль
  4. www.mydomain.com / Вопросы и ответы
  5. www.mydomain.com / Таска
  6. www.mydomain.com / TaskB

когда пользователь впервые заходит на сайт, ему нужно перенаправить на страницу входа. В любое время пользователь также должен иметь возможность переключаться с одного действия контроллера на другое действие контроллера (с TaskA на Logoff).

как это сделать?

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Вам не нужно устанавливать маршрут для каждого URL.С небольшой помощью от ограничений маршрута вы можете сделать что-то вроде этого:

        routes.MapRoute(
            "Home", // Route name
            "{action}", // URL with parameters
            new { controller = "Home", action = "Index" }, // Parameter defaults
            new { action = "TaskA|TaskB|TaskC|etc" } //Route constraints
        );

        routes.MapRoute(
            "Account", // Route name
            "{action}", // URL with parameters
            new { controller = "Account", action = "Logon" }, // Parameter defaults
            new { action = "Logon|Logoff|Profile|FAQs|etc" } //Route constraints
        );
6 голосов
/ 20 июня 2011

Вы можете установить маршрут для определенных URL, которые не соответствуют маршруту по умолчанию.Например:

routes.MapRoute("Logon", "logon/", new { controller = "account", action = "logon" });
routes.MapRoute("TaskA", "TaskA/", new { controller = "home", action = "taska" });

Ваш маршрут по умолчанию может определить вашу стартовую страницу, если не найдены все другие совпадения для URL.

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}/", // URL with parameters
            new { controller = "account", action = "logon", id = UrlParameter.Optional } // Parameter defaults
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...