在调试我的Visual Studio 2010 MVC2解决方案时,我发现了一些我不一定期待的东西,这让我觉得效率低下。当我查看主页时,IntelliTrace显示许多异常在解析部分视图时被抛出并被捕获。
我有调用部分视图的代码:
<% Html.RenderPartial("FiltersAvailablePartialView", Model.AvailableFilters); %>
项目中视图的结构遵循典型的MVC应用程序。有一个Views文件夹,其中包含两个文件夹,Home和Shared。在Home文件夹中,我有.aspx页面用作我的主视图页面,在Shared文件夹中我有一个用作局部视图的.ascx页面,如下所示(其他视图和部分视图未列出)为简单起见:
浏览
- &gt;主页
- &GT; Home.aspx
- &gt;共享
- &GT; FiltersAvailablePartialView.ascx
我在加载页面时在IntelliTrace中看到的是抛出并捕获这些异常:
抛出:“文件'/ MyApp/Views/Home/FiltersAvailablePartialView.aspx'不存在。”
抓住:“文件'/ MyApp/Views/Home/FiltersAvailablePartialView.aspx'不存在。”
抛出:“文件'/ MyApp/Views/Home/FiltersAvailablePartialView.ascx'不存在。”
抓住:“文件'/ MyApp/Views/Home/FiltersAvailablePartialView.ascx'不存在。”
抛出:“文件'/ MyApp/Views/Shared/FiltersAvailablePartialView.aspx'不存在。”
抓住:“文件'/ MyApp/Views/Shared/FiltersAvailablePartialView.aspx'不存在。”
所以看起来.Net框架正在使用昂贵的try / catch方法来解析视图 - 首先查看Home文件夹中的.aspx视图,然后查看Home文件夹中的.ascx视图,然后查看共享文件夹中的.aspx视图,然后是共享文件夹中的.ascx视图。因此,虽然它最终发现部分视图和页面呈现没有任何错误,但这似乎是一种昂贵的方式(捕获异常)来查找视图。
MVC2框架是否内置了我可以/应该做的事情,以便在第一次尝试时解决这个部分视图引用并避免发生这些代价高昂的try / catch调用?
答案 0 :(得分:3)
如果在发布模式下编译,则只会发生一次。如果在Debug模式下编译,则会发生每个请求。
调试模式下的分析通常与实际性能的相关性非常有限。