Карта маршрутизации MVC 2 от одного контроллера к другому - PullRequest
0 голосов
/ 25 сентября 2010

Я использую MVC 2.

У меня есть 2 контроллера, которые называются Application и Note.Приложение представляет собой заявку на кредит.В приложение можно добавить заметку.

В моем индексе у меня есть сетка, в которой отображаются все приложения, и столбец действий со ссылкой «Добавить заметку».

В моемКонтроллер приложений У меня есть методы действий для создания и редактирования.В моем контроллере заметок у меня есть методы действий для создания, редактирования и удаления.

Мне было интересно, возможно ли следующее, когда пользователь нажимает ссылку "Добавить заметку", чтобы перейти к URL-адресу, например:

Application/1/Note/Create

1 - идентификатор приложения.Note - это контроллер Note, а Create - метод действия в контроллере Note.Возможно ли что-то подобное?

Я начал с отображения в моем global.asax, но не уверен, что оно правильное:

routes.MapRoute(
   null,
   "Application/{ApplicationID}/{controller}/{action}",
   new { controller = "Note", action = "Create" });

Как бы я создал ссылку в своей сетке, используяссылка действия?

Пожалуйста, кто-нибудь может посоветовать?

РЕДАКТИРОВАТЬ:

Сетка выше находится на моем индексном представлении в моей домашней директории.Так что в этой сетке мне нужно объединить ссылку для отображения, как указано выше.Я изо всех сил пытаюсь создать эту ссылку в моем представлении индекса.Это не объединяет правильно.В настоящее время у меня есть это:

Html.ActionLink («Добавить заметку», «Создать», «Заметка», новый {ApplicationID = c.ApplicationID}, null)

And it is displaying as /Note/Create/?ApplicationID=1

Мне нужноэто отображать как:

/Application/1/Note/Create

Спасибо Брендан

1 Ответ

1 голос
/ 25 сентября 2010

Чтобы создать ссылку с использованием этого маршрута, попробуйте использовать вспомогательный метод ActionLink:

<%= Html.ActionLink(
    "Create note", "Create", "Note", new { ApplicationID = "123" }, null
) %>

выдаст /Application/123 и перейдет к действию Create NoteController и передаст 123в качестве параметра applicationID:

public class NoteController : Controller
{
    public ActionResult Create(int applicationID)
    {
        return View();
    }
}

Предполагается, что маршруты зарегистрированы следующим образом:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        null,
        "Application/{ApplicationID}/{controller}/{action}",
        new { controller = "Note", action = "Create" });

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...