2009-07-24 73 views
0

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

所以我所说的行动多次在我父视图的指标作用:

<% 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指向我的父视图的索引行为。

这是一个已知的问题吗?我可以做错什么吗?当从RenderAction调用动作时应该如何完成动作链接?

预先感谢您。
此致敬礼。

约阿希姆

+0

你可以发布一些代码吗? – griegs 2009-07-24 11:52:50

回答

0

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

+0

是的,我的意思是由嵌套控制器提供的路由/链接。例如。由Html.ActionLink辅助方法。 – 2009-07-31 16:33:44

+0

我的头部有点麻烦......你能举出预期的和实际的路线/网址的例子吗? – 2009-07-31 18:18:58

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()的伎俩,呼吁并呈现从视图中的动作似乎有点我错了。该视图已经是一个行动的结果。