Html.Partial 和 Html.Action 方法有什么区别?



我有一个控制器,它返回PartialViewResult并使用它进行视图。为了进行测试,我输出当前日期时间(在操作中),并在视图中检查它是否为空,所以我知道我得到了什么。

当我尝试将该视图"嵌入"到另一个视图中时Html.Action我会得到当前日期时间,因此调用了我的操作。

但是当我使用 null 呈现视图Html.Partial时,不会调用我的操作方法。此外,两个断点和调试器也确认,在后一种情况下,不会调用 my action 方法。

操作方法:

public PartialViewResult Test()
{
  return PartialView(DateTime.Now);
}

(部分)视图:

@model DateTime?
<p>@(Model ?? DateTime.MinValue)</p>

并且从主视图调用是@Html.Action("Test")@Html.Partial("Test")

Html.Action() 将调用您的操作方法,但 Html.Partial()

不会。 Html.Partial() 只是呈现您的部分视图,如果您有一些静态内容,或者您已经加载了视图数据,则很有用。

Html.Partial("PartialName", Model.PartialData);

将呈现 PartName 视图,并将模型数据传递给它。这是将视图分解为干净部分的好方法,而无需对服务器产生任何其他请求。

Html.Action("Test")

将调用测试操作,并呈现结果。

这就是您看到空日期时间的原因。Html.Action() 实际上是调用操作、计算 DateTime 并呈现视图,而 Html.Partial() 只是呈现视图。

最新更新