了解加载 ChildAction 的过程

Understanding the process of loading a ChildAction

这是一个招聘网站:我有一个显示职位的表格,还有一个 申请 按钮。如果用户单击“应用”,将打开一个弹出窗口,用户在其中单击他的信息并单击“发送”按钮:

当用户点击 Apply 时,将打开一个模态...这个模态包含用户信息,即姓名和他的简历(我们在数据库中保留一份使用简历的副本求职申请):

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

DisplayJob.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);
    }
}

我想了解 ChildAction PartialView 是如何加载的:​​

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

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

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

还有一点要提的是JobControllerConstructor被调用了2次,也就是说ActionChildAction都实例化了自己的[=16]实例=].