Справка Asp.net MVC3 относительно URL - PullRequest
0 голосов
/ 19 января 2012

Я делаю заявку, используя Asp.net MVC,

У меня есть URL, который генерирует динамически, как HTTP: \ локальный: 4351 \ имя пользователя

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

HTTP: \ локальный: 4355 \ Пользователи \ Профиль \ имя пользователя

У меня есть контроллер с именем users и определено действие с именем profile

Как я могу реализовать эту функцию?

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Вам нужны два MapRoutes.

Непонятно, подразумевали ли вы «имя пользователя» в качестве фактического имени пользователя или части URL.Поэтому я покажу оба способа:

Метод 1:

Это если ваш путь буквальный: http: \ localhost: 4351 \ username и буквальный путь: http: \ localhost: 4355 \ users\ profile \ username

routes.MapRoute("Route1", "Username", new { controller = "Users", action = "Profile" });
routes.MapRoute("Route2", "Users\Profile\Username", new { controller = "Users", action = "Profile" });

Если имя пользователя подразумевается как фактическое имя пользователя, то сделайте следующее:

Метод 2:

Пример: http: \ localhost:4351 \ mySpecialUsername и http: \ localhost: 4351 \ users \ profile \ mySpecialUsername

routes.MapRoute("Route1", "{Username}", new { controller = "Users", action = "Profile" });
routes.MapRoute("Route2", "Users/Profile/{Username}", new { controller = "Users", action = "Profile" });

Для метода 2 ваши действия в контроллере должны выглядеть следующим образом:

// Example
public ActionResult Profile(string Username)
{
    return Content(string.Format("Username: {0}", Username));
}

Надеюсь, чтопомогает!

0 голосов
/ 19 января 2012

Вы можете добавить roure в файл Global.asax.cs:

routes.MapRoute(
                "UsernameRoute", // Route name
                "{username}", // URL with parameters
                new { controller = "Home", action = "Redirect" } 
            );

и добавить следующее действие в HomeController:

 public ActionResult Redirect(string username)
        {
            //Check if user exists
            bool userExists = true;
            if (userExists)
            {
                return RedirectToAction("Profile", "User", new { id = username });
            }

            return RedirectToAction("Index");
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...