как использовать ActionLink для перехода на другую страницу asp.net MVC - PullRequest
1 голос
/ 05 января 2011

Привет, у меня есть ссылка действия, размещенная на http://localhost:1338/Tags/InternalTag/Test, на которую я бы хотел сослаться http://localhost:1338/News/News/DisplayArticle?ArticleID=b491bee6-772c-4184-804a-13e53e50aa3d

Я использовал <%: Html.ActionLink("Test", "DisplayArticle", "News")%>, но в результате http://localhost:1338/Tags/News/DisplayArticle

1 Ответ

1 голос
/ 05 января 2011

После прочтения, я думаю, мне может понадобиться больше информации, но вот что я предлагаю на данный момент.

Я предполагаю, что InternalTags - ваш контроллер, а Test - ваше действие.

Чтобы в URL-адресе было ArticleID, необходимо добавить ArticleID в виде "routeValue"

Но это не исправит это полностью.

Ваша страница находится в тегах / InternalTag / Test

Ваша ссылка на вашей тестовой странице определяется как:

<%: Html.ActionLink("Test", "DisplayArticle", "News")%>

Будет разрешено: http://localhost:1338/Tags/News/DisplayArticle

Если вы добавите ArticleID к ссылке (как показано ниже):

<%: Html.ActionLink("Test", "DisplayArticle", "News", new {ArticleID = "b491bee6-772c-4184-804a-13e53e50aa3d"}, null)%>

С другой стороны:

<%: Html.ActionLink("Test", "DisplayArticle", new {Controller="News", ArticleID = "b491bee6-772c-4184-804a-13e53e50aa3d"})%>

Это разрешит до Tags/News/DisplayArticle?ArticleID={GUID}.

Если я что-то пропустил, я покрою другой угол:

Для меня Теги - это сайт, на котором вы находитесь, что делает Новости совершенно другим сайтом, если вы хотите перейти на него, вам нужно жестко закодировать вашу ссылку как: http://localhost:1338/News/News/DisplayArticle?ArticleID=b491bee6-772c-4184-804a-13e53e50aa3d.

Если это один и тот же сайт, вам нужно отсортировать маршруты в вашем Global.asax.

Может быть, вы можете прокомментировать мой ответ, и я отредактирую его соответственно?

Редактировать После 1-го комментария: Если вы можете правильно составить карту маршрутов, то для выбора правильного маршрута достаточно часто использовать ссылку «Действие», для этого нужно посмотреть, как перечислены ваши маршруты, и изменить порядок и используемые значения по умолчанию, чтобы убедиться, что подписи достаточно конкретны для выбора маршрут, который вы хотите.

Для принудительного выбора маршрута вы можете использовать Html.RouteLink(linkText,routeName,routevalues)

Это позволит вам контролировать точный маршрут, который вы хотите использовать, а затем передать значения маршрута для контроллера, действия и ArticleID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...