在Asp.net Mvc中使用"- @Html.Action("")-"view

本文关键字:quot @Html Action view Asp net Mvc | 更新日期: 2023-09-27 18:17:29

假设:我有两个动作(动作名称= A, B) &2个视图,每个动作一个视图

操作"A"的视图如下图

@*codes*@
    @Html.Action("B")    
    @*calling action 'B' to render its content from view of action'A'*@
@*more codes*@

现在我的问题是,从动作"A"的角度询问动作"B"的内容是否会向web服务器发出2个请求,一个来自用户(请求动作A的内容),另一个来自服务器对自身的内部请求(或类似的东西)。或者可能是我需要确保的东西,只要性能被考虑,而从一个视图调用一个动作。

在Asp.net Mvc中使用"- @Html.Action("")-"view

是的,控制器被初始化,动作被调用,在相同的上下文中执行。但是没有第二个http请求,所有的网络开销都是隐含的。

以这种方式执行肯定会有一些性能缺陷,但它确实做了一些分析,看看造成了多大的损害。

任何时候你渲染一个动作从一个视图通过Html.Action()Html.RenderAction()你创建一个全新的请求到服务器到MVC,这反过来调用(大部分)默认的请求管道。虽然这不是一个额外的web请求,但它仍然有些昂贵。

与标准请求相比,MVC团队已经考虑减少"子操作请求"的开销,但它仍然是MVC管道的两个单独执行。

是的,在RenderAction(较慢)和RenderPartial(较快)的性能上有显著的区别。根据定义,RenderAction必须运行整个ASP。. NET管道来处理在系统看来是一个新的HTTP请求,而RenderPartial只是向现有视图添加额外的内容。

——brad Wilson, ASP的高级开发人员。. NET MVC团队

(源)