2

我有一个带有动作“Foo”的 Microsoft MVC 项目,其视图(“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>

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

4

1 回答 1

2

我不知道这是否是您做错了,但我从未将 Html.RenderAction 与返回 ASPX 视图的操作一起使用。当我调用 RenderAction 时,我确保我正在调用一个返回 ASCX 视图用户控件的控制器操作。

通常 .ASPX 文件是整个页面,您不能(不应该)在另一个页面中呈现它。因此,我认为您应该将其设置为查看用户控件(ASCX)并将其放在共享或控制器的视图文件夹中。

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

于 2010-02-18T20:56:29.187 回答