Html.ActionLink() дает мне пустую ссылку, когда я использую ее внутри Html.RenderAction()

StackOverflow https://stackoverflow.com/questions/2291691

Вопрос

У меня есть проект Microsoft MVC с действием «Foo», представление которого («Foo.aspx») содержит строки:

<%= Html.ActionLink("mylinktext1", "bar") %>
<%= Html.ActionLink<MyController>(x => x.Bar(), "mylinktext2") %>

Когда я нажимаю на это из веб-браузера или загружаю его с помощью вызова AJAX, он правильно возвращает:

<a href="/bar">mylinktext1</a>
<a href="/Bar">mylinktext2</a>

Но когда я вызываю действие из другого представления, например:

<% Html.RenderAction<MyController>(x => x.Foo()); %>

Тогда ссылки отображаются без целей.

<a href="">mylinktext1</a>
<a href="">mylinktext2</a>

Почему это происходит и как с этим бороться?

Это было полезно?

Решение

Я не знаю, что вы делаете неправильно, но я никогда не использовал Html.RenderAction с действиями, которые возвращают представления ASPX.Когда я вызываю RenderAction, я проверяю, что вызываю действие контроллера, которое возвращает пользовательский элемент управления ASCX View.

Обычно файл .ASPX представляет собой целую страницу, и вы не можете (не должны) отображать его внутри другой страницы.Поэтому я думаю, вам следует сделать это View User Control (ASCX) и поместить его либо в общую папку, либо в папку представления контроллера.

Судя по вашему комментарию:Конечно, это нормально.Вы просто возвращаете свои данные в качестве модели в свои представления/представления пользовательских элементов управления.Когда вы загружаете их через AJAX, вам следует рассмотреть возможность реализации рендеринга представления в строку.Найдите в Google или Stack дополнительную информацию об этом.Вы также можете поискать атрибут JsonPox для своих методов действий, который также реализован где-то в Интернете.Это позволит украсить ваши методы действий так, чтобы они могли возвращать представление HTML, XML или JSON, если это вам также может понадобиться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top