0

我正在使用 RenderAction 在我的视图中包含几个“组件”的输出。但是每次我在嵌套操作中使用对 ActionLink 的 RenderAction 调用都会产生错误的路由。(RouteLink 也是如此。)如果直接调用该操作,则会生成正确的路由。

所以我在父视图的索引操作中多次调用该操作:

<% 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 连接到 StateAdminController 的编辑方法:

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

但是 ActionLink 指向我父视图的 Index-Action。

这是一个已知问题吗?我可以做错事吗?当从 RenderAction 调用动作时,ActionLinks 应该如何完成?

先感谢您。
问候。

约阿希姆

4

2 回答 2

0

你提到了路线。值得注意的是,当您使用 RenderAction 时,控制器会被直接调用(即不是来自 Url)。因此,它不会通过您的路由表。

于 2009-07-30T18:43:06.797 回答
0

我宁愿设计我的视图模型以包含所有变体的属性,然后调用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()成功了,但从视图调用和渲染一个动作对我来说似乎有点不对劲。视图已经是一个动作的结果。

于 2009-10-04T20:36:27.237 回答