2010-11-02 3 views
1

я все,ASP.NET MVC маршруты: Конфликтующие имена действий с пользовательским маршрутом

В previous question, я спросил, как определить пользовательский маршрут для обработки следующего URL:

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

У меня есть Пользовательский объект и объект UserProfile, но только UserController, который я хочу использовать для действий над обоими объектами. У меня уже есть метод в UserController с именем Edit, который обрабатывает изменения для пользователя. Но мне также нужен метод для редактирования в UserProfile. Ответ на мой вопрос маршрутизации был следующий маршрут:

routes.MapRoute(
    "ProfileleRoute", // Route name 
    "User/Profile/{action}/{userProfileID}", // URL with parameters 
    new { controller = "User", action = "Index" } // Parameter defaults 
); 

Но учитывая, что пользовательский маршрут, где я должен объявить действие редактирования для UserProfile, и что она должна называться? Похоже, я не мог написать другой метод в UserController под названием Edit, потому что у меня уже есть тот, который обрабатывает редактирование пользователя.

Таким образом, я чувствую, что мне понадобится два действия «Изменить», чтобы обрабатывать следующие маршруты: «Пользователь/Редактировать» и «Пользователь/Профиль/Изменить». Как мне обойти это?

Большое спасибо.

+1

Вы говорите, что вам нужно различать User/Edit и User/Profile/Edit? – dotariel

+0

Да, именно то, что я говорю. Отредактированный вопрос должен быть более ясным. –

+0

Зачем вам обойти это? Разве это не является репрезентативным для вас? Или они одинаковы? – dotariel

ответ

0

Когда в кадре будет указано, какое действие нужно выполнить, сначала проверьте действия с именем, необходимым с атрибутом HttpPost от HttpGet, который соответствует запросу, если это не действие выбрано таким образом, тогда оно выбирает любое действие, которое соответствует имя. Итак, если у вас есть два действия с тем же именем без атрибутов HttpPost или HttpGet, вы не сможете контролировать действие, которое будет выполнено.

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