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

Здравствуйте, у меня есть ссылка действия, размещенная на 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


person David    schedule 05.01.2011    source источник


Ответы (1)


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

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

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

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

Ваша страница находится в Tags/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/Новости/DisplayArticle?ArticleID=b491bee6-772c-4184-804a-13e53e50aa3d.

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

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

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

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

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

person Luke Duddridge    schedule 05.01.2011
comment
Привет, вы правы... Я думаю, потому что у нас разные регистрации для разных частей нашего сайта. Для меня это 1 веб-сайт, то есть localhost: 1337, но у моих тегов другой маршрут к новостям, поэтому это localhost:1338/ Новости и localhost:1338/Tags - person David; 07.01.2011