【发布时间】: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 是如何加载的:
- 客户端是否向服务器发送了 2 个请求,一个用于加载视图,另一个用于加载
ChildAction?或者所有内容都在一个请求中发回? - 如果向服务器发送了 2 个请求,主视图的显示是否会延迟到子视图加载完毕?
- 如果视图延迟到加载子操作后,使用 ajax 加载模态框会更有效吗,让页面在场景后显示和加载模态框?
【问题讨论】:
-
该属性仅用于防止在任何其他上下文中调用该操作,而不是在包含视图中呈现。因此,尝试通过 AJAX 请求该操作应该会失败。
-
@TiesonT,谢谢你的评论,你是对的......我的意思是创建一个新的
ActionMethod,它通过ajax而不是使用ChildAction方法调用。
标签: asp.net-mvc asp.net-mvc-5 partial-views child-actions