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

У меня есть проект 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>

Почему это происходит, и как мне обойти это?

1 Ответ

2 голосов
/ 18 февраля 2010

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

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

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

...