Могу ли я сделать это в ASP.NET MVC маршрутизации? - PullRequest
0 голосов
/ 21 января 2010

Я пытаюсь создать сайт, подобный http://example.com, который переходит к моему действию входа в систему, расположенному на контроллере учетной записи.После входа я хочу перенаправить что-то вроде http://example.com/id, где id - это идентификатор пользователя.

У меня уже есть этот код в моем Global.asax.cs.

 routes.MapRoute("Login2",
           "{bg}/{controller}/{action}",
          new { controller = "Account", action = "SignIn", bg = "" }
          );
 routes.MapRoute("Login",
            "{controller}/{action}",
           new { controller = "Account", action = "SignIn" }
           );
routes.MapRoute("Default",
           "{bg}/{controller}/{action}",
           new { controller = "Home", action = "Index", bg = "" }
           ); 

Когда я перехожу на http://example.com/id и пользователь еще не аутентифицирован, отображается форма входа в систему и она переходит на страницу, которую я хочу перенаправить после входа в систему. В случае просто перехода на http://example.com, Я делаю некоторую проверку на стороне сервера, чтобы узнать идентификатор пользователя, и он также выполняет свою работу.

Когда я нахожусь в http://example.com/id и я хочу зарегистрироватьсяесть ссылка, которая ведет на http://example.com/id/account/signup. На самом деле она идет на страницу регистрации.Но когда я перехожу на http://example.com и пытаюсь навести ссылку на регистрацию, ссылка становится http://account/signup вместо http://example.com/account/signup.

Ответы [ 2 ]

1 голос
/ 21 января 2010

Да, вы определенно можете, я делаю то же самое на блоге, который я создал, где у меня есть такие маршруты, как {BlogSubFolder} / {контроллер} / {действие}. Единственный комментарий, который я хотел бы сделать, это то, что я не уверен, имеет ли значение порядок по умолчанию.

В моем случае я велел им следовать той же схеме, что и сам маршрут. Поэтому я бы сказал, что move language = "" будет первым по умолчанию, а не последним.

Извините за правку, половина моего ответа почему-то обрезана. Вот остаток.

Я на самом деле пробовал тот же маршрут в тестовом приложении, и у меня были некоторые проблемы с ним. Если я просто делаю маршрут по умолчанию, который создает MVC, я могу просто указать / Controller без каких-либо действий в конце, и все работает нормально. Когда я делаю ту же вещь с предыдущей переменной (такой как ваш {language} или мой {blogSubFolder}), это фактически не работает. Это именно то поведение, которое вы видите. Единственное, что я могу понять из всего этого, это то, что если у вас сначала нет контроллера, то, похоже, у вас должно быть действие, указанное в вашем URL. Я пробовал это с разными комбинациями, включая включение контроллера по умолчанию, но не включая его, а также пробовал несколько разных маршрутов, но безуспешно.

1 голос
/ 21 января 2010

Проверьте это объяснение ScottGu о маршрутизации. это должно помочь вам. проверить это здесь

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