0

我在我的视图中使用以下代码在 MVC 中显示数据库中的图像

<img alt="@Html.Raw(m.Title)" src="@Url.Action("Preview", "Pictures", new { id = m.Id} )"/>

图像视图使用子操作从我的控制器返回到主视图。

<div>
    @Html.Action("Gallery", "Pictures")
</div>

[ChildActionOnly]
    public ActionResult Gallery()
    {...}

出于好奇,我试图检查是否@Url.Action作为子动作执行,但发现它没有作为子动作执行。我以为我知道 MVC Actions 和 Child Actions 之间的区别,但这让我重新思考。你能解释一下为什么这不被控制器视为子动作吗?

4

1 回答 1

1

子动作是作为原始动作的一部分执行的动作。因此,您的浏览器调用操作 1,并且在视图的 Razor 渲染期间,您的视图调用@Html.Action()以渲染子操作。子操作在操作 1 的结果发送回客户端之前执行。

@Url.Action()在您的情况下,浏览器正在调用“预览”操作 ( )。这会导致第二个动作,而不是子动作,因为第一个动作的结果已返回给浏览器,现在您的浏览器正在调用新动作。就像用户单击<a>链接以导航到新页面一样。

于 2013-08-30T19:14:16.673 回答