【问题标题】:Understanding the process of loading a ChildAction了解加载 ChildAction 的过程
【发布时间】:2020-05-22 01:20:44
【问题描述】:

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

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

现在,我想让它成为一个高效的设计...我不想一开始就将用户 CV 加载到视图中,以缩短加载时间...所以我正在考虑将整个 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 加载模态框会更有效吗,让页面在场景后显示和加载模态框?

【问题讨论】:

  • 该属性仅用于防止在任何其他上下文中调用该操作,而不是在包含视图中呈现。因此,尝试通过 AJAX 请求该操作应该会失败。
  • @TiesonT,谢谢你的评论,你是对的......我的意思是创建一个新的ActionMethod,它通过ajax而不是使用ChildAction方法调用。

标签: asp.net-mvc asp.net-mvc-5 partial-views child-actions


【解决方案1】:

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

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

另外要提的一点是JobControllerConstructor 被调用了2 次,这意味着ActionChildAction 都实例化了自己的JobController 实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2013-05-14
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多