Почему путь ASP.NET MVC отображается с переменными? - PullRequest
2 голосов
/ 11 апреля 2009

Почему в моем приложении MVC

Return RedirectToAction("Edit", "Forms", New With {.member = "123"})

возвращение

http://localhost:13/Forms/Edit?member=123

от

http://localhost:13/Forms/Edit/123

А почему

<%=Html.ActionLink("MyLink", "Edit", "Forms", New With {.member = "123"}, Nothing)%>

сделать то же самое?

Ответы [ 2 ]

6 голосов
/ 11 апреля 2009

Как говорит tvanfosson, «id» - это то, для чего настроен механизм маршрутизации по умолчанию. Все остальное как 3-й параметр, и оно будет использовано как строка запроса.

Почему? Из-за этого метода в вашем Global.asax:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

Вы можете изменить это, добавив дополнительную строку route.MapRoute (), например:

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

routes.MapRoute(
    "Default2",
    "{controller}/{action}/{member}",
    new { controller = "Home", action = "Index", member = "" }
);
5 голосов
/ 11 апреля 2009

Стандартная маршрутизация настроена на использование id в качестве третьего параметра. Измените "member" на "id", и вы получите ожидаемый маршрут.

Return RedirectToAction("Edit", "Forms", New With { .id = "123"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...