直接在MVC中指定视图位置更有效吗?

时间:2011-12-07 14:13:00

标签: asp.net-mvc asp.net-mvc-3

我想让代码尽可能高效地运行。我的观点位于以下位置:

~/Areas/Administration/Views/Accounts/Create.cshtml

我想知道的是,如果以这种方式直接对视图位置进行编码更有效,有人会查看:

return View("~/Areas/Administration/Views/Accounts/Create.cshtml", vm);

如果没有像这样编码,那么我相信它会首先搜索以下所有位置:

~/Areas/Administration/Views/Accounts/Create.aspx
~/Areas/Administration/Views/Accounts/Create.ascx
~/Areas/Administration/Views/Shared/Create.aspx
~/Areas/Administration/Views/Shared/Create.ascx
~/Views/Accounts/Create.aspx
~/Views/Accounts/Create.ascx
~/Views/Shared/Create.aspx
~/Views/Shared/Create.ascx
~/Areas/Administration/Views/Accounts/Create.cshtml

2 个答案:

答案 0 :(得分:6)

不要担心这一点,永远不要硬编码这样的观看位置。在Release模式下运行时,ASP.NET MVC会保留这些位置的缓存,并且不会执行所有昂贵的查找。

答案 1 :(得分:3)

Sam Saffron在博文中有explored the performance impact个查看位置。两个结论:

  • 在运行发布版本时,视图位置被缓存,因此实​​际上没有性能损失
  • 在调试模式下,您可以通过删除对实际未使用的视图引擎的支持来提高性能(例如WebForms)

因此,我第二个Darin的建议是硬编码视图位置会给您带来不便,如果您正在完成本书的所有其他操作,则不会提供性能优势。