我在新的MVC4站点上安装了Mini-Profiler,并且注意到某些Find: DisplayTemplates(包括String和DateTime)的等待时间很长。下面是一个例子。在另一个问题中,Sam Saffron谈到了有关查找步骤的内容

但是,在每次页面加载时都会发生以下情况:

http://localhost:80/SLS.Site/s/hogwarts/lunch...     2.6    +0.0
  Check School Permissions                           2.4    +2.0     1 sql   0.9
  Controller: SchoolAdmin.LunchGroupsController...   4.0    +4.5
  Find: Index                                        0.4    +8.6
  Render : Index                                    70.0    +9.1     2 sql   13.0
   Controller: SchoolAdmin.LunchGroupsController...  2.6    +12.3
   Find: BuildingTree                                0.4    +14.9
   Render partial: BuildingTree                      4.4    +15.4    1 sql   3.2
   Controller: SchoolAdmin.LunchGroupsController...  3.3    +20.2
   Find: Teachers                                    0.6    +23.6
   Render partial: Teachers                          4.3    +24.3    1 sql   2.4
   Find: DisplayTemplates/String                   409.3    +31.9
   Render partial: _UserContext                      0.0    +441.3
   Find: _LoginPartial                               1.2    +441.4
   Render partial: _LoginPartial                     0.2    +442.6
                                                                     3.9 % in sql
有什么想法吗?
编辑
我设置了4个区域,所以我发现它遍历了所有目录以查找匹配项,因此我删除了2个区域,并且具有相同的行为。

最佳答案

我有完全相同的问题...经过一番搜索后,我发现我在使用:
@DisplayFor(x => x.StringProperty);
经过仔细考虑,并亲自制作了一些模板,找出了所有DisplayFor/EditorFor方法的工作方式,这没有任何意义。

(有关DisplayFor/EditorFor的工作原理的一些解释)

当使用DisplayFor/Editor时,MVC获取对象的type,然后在Views/ControllerName/DisplayTemplates目录中搜索与该类型同名的 View ,在这种情况下,它将搜索Views/ControllerName/DisplayTemplates/String.cshtml。由于它不存在,因此在Shared/DisplayTemplates views目录中也做了相同的操作,同样,它也不存在。

(下一点是猜测)

我认为由于找不到相关的Display/Editor模板,因此它将在对象上执行ToString(),作为故障转移。

由于您仍然只显示String类型,因此不使用DisplayFor(x => StringProperty)而只使用@Model.StringProperty是有道理的,这不会导致MVC搜索DisplayTemplate,而只是将其呈现为字符串,无论如何都会这样做。

关于asp.net-mvc - 查找: DisplayTemplates Speed,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11758338/

10-11 23:27