11

我有一个控制器,它返回 PartialViewResult 并用它查看。为了测试,我输出当前的 DateTime(正在运行),并在视图中检查它是否为空,所以我知道我得到了什么。

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

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

动作方法:

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

(部分)视图:

@model DateTime?

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

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

4

1 回答 1

25

Html.Action() 将调用您的操作方法,但 Html.Partial() 不会。Html.Partial() 只是呈现您的局部视图,如果您有一些静态内容,或者如果您已经加载了视图数据,则很有用。

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

将使用传递给它的模型数据呈现 PartialName 视图。这是将视图分解为干净部分的好方法,而无需向服务器产生任何额外的请求。

Html.Action("Test")

将调用您的 Test 操作,并呈现结果。

这就是您看到 NULL DateTime 的原因。Html.Action() 实际上是调用动作,计算 DateTime,并渲染视图,而 Html.Partial() 只是渲染视图。

于 2012-11-18T18:50:09.907 回答