我有一个控制器,动作返回PartialViewResult并用它查看。为了测试我输出当前的DateTime(在行动中),并在视图中检查它是否为空,所以我知道我得到了什么。
当我尝试使用Html.Action
将该视图“嵌入”另一个视图时,我会获得当前的日期时间,因此我的操作会被调用。
但是当我使用Html.Partial
时,视图以null呈现,我的动作方法不会被调用。此外,两个断点和调试器也确认,在后一种情况下,我的动作方法不会被调用。
行动方法:
public PartialViewResult Test()
{
return PartialView(DateTime.Now);
}
(部分)查看:
@model DateTime?
<p>@(Model ?? DateTime.MinValue)</p>
从主视图调用@Html.Action("Test")
或@Html.Partial("Test")
。
答案 0 :(得分:23)
Html.Action()将调用您的操作方法,但Html.Partial()不会。 Html.Partial()只呈现您的局部视图,如果您有一些静态内容,或者您已经加载了视图数据,则它非常有用。
Html.Partial("PartialName", Model.PartialData);
将传递给您的模型数据的PartialName视图。这是将视图分解为干净部分的好方法,而不必向服务器发出任何其他请求。
Html.Action("Test")
将调用您的Test操作,并呈现结果。
这就是你看到NULL DateTime的原因。 Html.Action()实际上是调用动作,计算DateTime和渲染视图,而Html.Partial()只是渲染视图。