了解加载ChildAction的过程

问题描述 投票:0回答:1

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

enter image description here

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

enter image description here

现在,我想使它成为一个高效的设计...我不想一开始就将用户CV加载到View中,以缩短加载时间...所以我正在考虑将整个Modal放在一个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加载模态会更有效,这将使页面显示并在后台加载模态?
asp.net-mvc asp.net-mvc-5 partial-views child-actions
1个回答
0
投票

[我使用Chrome网络标签检查了代码:

enter image description here

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

要提到的另一点是,ConstructorJobController被调用了2次,即ActionChildAction使用了它们自己的JobController实例)。

© www.soinside.com 2019 - 2024. All rights reserved.