首页 > 解决方案 > 了解加载 ChildAction 的过程

问题描述

这是一个招聘网站:我有一个显示工作的表格,并且有一个申请按钮。如果用户单击应用,将打开一个弹出窗口,用户单击他的信息并单击发送按钮:

在此处输入图像描述

当用户单击应用时,将打开一个模态......此模态包含用户信息,即姓名和他的简历(我们在数据库中保留一份使用简历的副本,来自上一个工作申请):

在此处输入图像描述

现在,我想让它成为一个高效的设计......我不想一开始就将用户 CV 加载到视图中,以缩短加载时间......所以我正在考虑将整个 Modal 放入ChildAction如下所示:

显示作业.cshtml

@model JobViewModel
@Html.DisplayFor(m => m.JobDescription);
<input type="button" value="Apply" />
@Html.Action("ApplyForJobModal", new { /* route params */ }); // modal to apply for job

控制器动作:

public class JobController : Controller
{
    public ActionResult DisplayJob()
    {
        var jobViewModel = <-- Get JobViewModel from DB
        return View(jobViewModel);
    }

    [ChildActionOnly]
    public ActionResult ApplyForJobModal(/* route params */)
    {
        var userInfoViewModel = <-- Get user name from Claims and CV from DB
        return PartialView("_ApplyForJobModal", userInfoViewModel);
    }
}

我试图了解ChildActionPartialView 是如何加载的:

  1. 客户端是否向服务器发送 2 个请求,一个用于加载视图,另一个用于加载ChildAction?或者所有内容都在一个请求中发回?
  2. 如果向服务器发送2个请求,主视图的显示是否会延迟到加载子视图?
  3. 如果视图延迟到加载子操作之前,使用 ajax 加载模态框会更有效吗,让页面在场景后面显示和加载模态框?

标签: asp.net-mvcasp.net-mvc-5partial-viewschild-actions

解决方案


我使用 Chrome 网络选项卡检查了代码:

在此处输入图像描述

View对和PartialView(Action和) 的调用ChildAction是同一个 HttpRequest 的一部分,这意味着视图的显示会延迟到ChildAction准备就绪,然后将整个结果作为单个响应的一部分发送给客户端。

另一点要提到的是ConstructorofJobController被调用了 2 次,这意味着两者都Action实例ChildAction化了它自己的实例JobController


推荐阅读