我正在使用RenderAction在我的视图中包含几个“组件”的输出。但是每次我在嵌套动作中使用RenderAction调用ActionLink都会产生错误的路径。 (与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的Edit方法:
<%= Html.ActionLink<StateAdminController>(c => c.Edit(state.Id), "Bearbeiten") %>
但是ActionLink指向我父视图的索引动作。
这是一个已知问题吗?我能做错什么吗?从RenderAction调用操作时应该如何完成ActionLink?
提前谢谢你 问候。
勒夫
答案 0 :(得分:0)
你提到了路线。值得注意的是,当您使用RenderAction时,控制器将被直接调用(即不是来自Url)。因此,它不会通过您的路由表。
答案 1 :(得分: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()
可以解决问题,但从视图中调用和渲染操作对我来说似乎有点不对劲。视图已经是一个动作的结果。