Персонализированный URL для каждого пользователя, использующего ASP.NET MVC - PullRequest
1 голос
/ 21 июля 2010

Я хотел бы создать сайт, где у каждого пользователя есть своя домашняя страница и где URL-адрес имеет формат site\username. Как я могу сделать это с помощью системы маршрутизации ASP.NET MVC?

Я планирую следующий макет URL:

mysite / -> домашняя страница
mysite / account / register -> страница регистрации аккаунта
mysite / user1 -> домашняя страница user1
mysite / user2 -> домашняя страница user2

Приведенный выше URL будет соответствовать следующему шаблону controller\action:

mysite / -> home / index
mysite / account / register -> account / register
mysite / user1 -> user / index
mysite / user2 -> user / index

Как мне организовать мой RegisterRoutes для решения этой проблемы?

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Вместо использования маршрута, подобного mysite/user1, вам, вероятно, потребуется использовать маршрут, подобный mysite/users/user1.Затем сопоставьте его с действием user/index и передайте последнюю часть (имя пользователя) в качестве параметра этому методу.

Проблема с использованием mysite/{username} заключается в том, что если кто-то решит использовать accountили что-то похожее на их имя пользователя?Это, вероятно, сделает их страницу недоступной для просмотра.

1 голос
/ 21 июля 2010

Попробуйте

routes.MapRoute(
    "User",
    "{username}",
    new { controller ="User", action="Index" }
);

Редактировать: Те, кто беспокоится о том, что пользователи злонамеренно (или случайно) нарушат этот формат, сделав свое имя пользователя в качестве "учетной записи" или что-то подобное, должны смотреть эту ссылку .

...