【问题标题】:ActionLink within RenderActionRenderAction 中的 ActionLink
【发布时间】:2009-07-24 11:35:14
【问题描述】:

我正在使用 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 调用 action 时,ActionLinks 应该如何完成?

提前谢谢你。
问候。

约阿希姆

【问题讨论】:

  • 你能发布一些代码吗?

标签: c# asp.net-mvc asp.net-mvc-futures


【解决方案1】:

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

【讨论】:

  • 是的,我的意思是嵌套控制器发出的路由/链接。例如。通过 Html.ActionLink 辅助方法。
  • 我有点难以理解它...你能举出预期和实际路线/网址的例子吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多