假设:我有2个动作(动作名称= A,B)& 2个视图,每个动作一个视图。
行动视图“A”如下所示
@*codes*@
@Html.Action("B")
@*calling action 'B' to render its content from view of action'A'*@
@*more codes*@
现在我的问题是从行动“A”的角度询问行动“B”的内容从用户(请求行动A的内容)和服务器对其自身的内部请求(或者某事物)向Web服务器发出2个请求像那样)。或者可能是我需要确保在从视图调用动作时考虑性能。
答案 0 :(得分:0)
每当您通过Html.Action()
或Html.RenderAction()
从视图呈现操作时,您正在向服务器创建一个全新的请求,而MVC又会调用(大多数)默认请求管道。虽然它不是一个额外的Web请求,但它仍然有点昂贵。
与标准请求相比,MVC团队已经考虑减少“子操作请求”的开销,但它仍然是MVC管道的两个独立执行。
是的,RenderAction(较慢)与RenderPartial(较快)的性能存在显着差异。根据定义,RenderAction必须运行整个ASP.NET管道来处理系统看起来是新HTTP请求的内容,而RenderPartial只是向现有视图添加额外内容。
-Brad Wilson,ASP.NET MVC团队的高级开发人员
(source)
答案 1 :(得分:0)
是的,控制器已初始化,并且操作称为位,它在同一上下文中执行。但是没有第二个http请求具有隐含的所有网络开销。
以这种方式执行操作肯定会有一些性能上的缺点,但它确实会进行一些分析以查看造成多少损坏。