当我在Html.RenderAction()中使用它时,Html.ActionLink()给我一个空链接

时间:2010-02-18 19:47:14

标签: asp.net actionlink renderaction

我有一个Microsoft MVC项目,其动作为“Foo”,其视图(“Foo.aspx”)包含以下行:

<%= Html.ActionLink("mylinktext1", "bar") %>
<%= Html.ActionLink<MyController>(x => x.Bar(), "mylinktext2") %>

当我从网络浏览器点击它或从AJAX调用加载它时,它会正确返回:

<a href="/bar">mylinktext1</a>
<a href="/Bar">mylinktext2</a>

但是,当我从另一个视图中调用此动作时:

<% Html.RenderAction<MyController>(x => x.Foo()); %>

然后在没有目标的情况下渲染链接。

<a href="">mylinktext1</a>
<a href="">mylinktext2</a>

为什么会发生这种情况,我该如何解决呢?

1 个答案:

答案 0 :(得分:2)

我不知道这是不是你做错了,但我从来没有将Html.RenderAction用于返回ASPX视图的操作。当我调用RenderAction时,我确保调用一个返回ASCX View User Control的控制器动作。

通常.ASPX文件是整个页面,您不能(不应该)在另一个页面内渲染它。 所以我认为您应该将其设置为View User Control(ASCX)并将其放在Shared或控制器的视图文件夹中。

根据您的评论: 当然这很好。您只需将数据作为模型返回到视图/视图用户控件。当您通过AJAX加载它们时,您应该考虑将Render View实现为String。搜索Google或Stack以获取更多信息。您还可以为您的操作方法搜索名为JsonPox属性的东西 - 也可以在Internet上的某个位置实现。它将启用装饰您的操作方法,以便他们能够返回HTML视图,XML或JSON,如果这也是您可能需要的。