ActionLink в RenderAction - PullRequest
       28

ActionLink в RenderAction

0 голосов
/ 24 июля 2009

Я использую RenderAction, чтобы включить вывод нескольких «компонентов» в моем представлении. Но каждый раз, когда я использую вызовы RenderAction для ActionLink в рамках вложенного действия, возникают неправильные маршруты. (То же самое для RouteLink.) Если действие вызывается напрямую, создаются правильные маршруты.

Поэтому я вызываю действие несколько раз в действии index моего родительского представления:

<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Event)); %>  
<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Booking)); %>  
<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Communication)); %>  
<% Html.RenderAction<StateAdminController>(c => c.Index(StateType.Payment)); %>  

Ив вложенном индексном представлении я пытаюсь создать ActionLink для метода Edit StateAdminController:

<%= Html.ActionLink<StateAdminController>(c => c.Edit(state.Id), "Bearbeiten") %>  

Но ActionLink указывает на Index-Action моего родительского представления.

Это известная проблема? Могу ли я сделать что-то не так? Как должны выполняться ActionLinks, когда действие вызывается из RenderAction?

Заранее спасибо.
С уважением.

Иоахим

Ответы [ 2 ]

0 голосов
/ 05 октября 2009

Я бы предпочел, чтобы моя модель вида содержала свойства для всех вариантов, а затем вызвал бы RenderPartial():

<% Html.RenderPartial("StateAdmin", Model.Event); %>  
<% Html.RenderPartial("StateAdmin", Model.Booking); %>  
<% Html.RenderPartial("StateAdmin", Model.Communication); %>  
<% Html.RenderPartial("StateAdmin", Model.Payment); %>  

Или даже стал бы фантазировать с моим собственным методом расширения, который просматривает коллекцию и вызывает RenderPartial() для каждого:

<% Html.RenderPartials("StateAdmin", Model.StateTypes); %>  

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

0 голосов
/ 30 июля 2009

Вы упомянули маршруты. Стоит отметить, что когда вы используете RenderAction, контроллер вызывается напрямую (т.е. не из URL). Следовательно, он не проходит через вашу таблицу маршрутизации.

...