2或1个服务器请求:在Asp.net中Mvc使用“ - @ Html.Action(”“) - ”在视图中向服务器发出2个请求

时间:2011-12-08 18:41:04

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

假设:我有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个请求像那样)。或者可能是我需要确保在从视图调用动作时考虑性能。

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请求具有隐含的所有网络开销。

以这种方式执行操作肯定会有一些性能上的缺点,但它确实会进行一些分析以查看造成多少损坏。