2010-11-02 3 views
4

Я искал онлайн ответ на этот вопрос, но я, честно говоря, не могу найти хорошую ссылку для маршрутов MVC.Маршруты ASP.NET MVC: как определить пользовательский маршрут

У меня есть UserController для объектов User. Пользователь может редактировать, сохранять, просматривать и т. Д., Поэтому у меня есть действия в этом контроллере для обработки каждого из них. Все это довольно просто. Но я недавно создал новый объект UserProfile, который можно также редактировать, просматривать и т. Д. Вместо того, чтобы создавать совершенно новый контроллер только для UserProfile, я бы хотел использовать существующий UserController. Таким образом, чтобы просмотреть профиль пользователя, я хотел бы, чтобы URL быть:

http://www.example.com/User/Profile/{userProfileID} 

И редактировать, я хотел бы, чтобы URL быть:

http://www.example.com/User/Profile/Edit/{userProfileID} 

Каждое из этих действий в UserController вернет другую страницу просмотра.

Как я могу определить маршруты для обработки этой структуры? Огромное спасибо.

ответ

11

В файле Global.asax в RegisterRoutes (метод) сделайте следующее:

routes.MapRoute(
    "ProfileRoute", 
    "User/Profile/{action}/{userProfileID}", 
    new { controller = "User", action = "Index" }); 

Как отметил в комментарии ... это должно прийти перед дефолтом маршрут.

+3

Кроме того, как FYI, так как он меня поймал, он должен быть объявлен до маршрута по умолчанию –

+0

Очень хороший момент ... отредактировал мой ответ. – Dismissile

+0

Итак, этот маршрут выглядит так, как будто он будет обрабатывать случай/User/Profile/Edit/{userProfileID}, потому что у меня может быть действие в UserController Edit, но как насчет просмотра профиля? Не нужно ли мне написать метод действий, называемый View или что-то, что можно сделать? Как я мог бы иметь/User/Profile/{userProfileID}? Кроме того, чтобы иметь возможность обрабатывать случай редактирования, что нужно было бы активировать действие в UserController, учитывая пользовательский маршрут? Он выглядит как «Индекс», но как я могу назвать его «Правка»? –

Смежные вопросы