Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 直接在MVC中指定视图位置是否更有效?_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 直接在MVC中指定视图位置是否更有效?

Asp.net mvc 直接在MVC中指定视图位置是否更有效?,asp.net-mvc,asp.net-mvc-3,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/

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

~/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

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

Sam Saffron在博客文章中查看位置。两个结论:

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

因此,我支持Darin的建议,即硬编码视图位置只会给您带来不便,而且如果您按照本书的要求做其他事情,也不会带来性能方面的好处。

我90%确信您的假设是正确的。如果您为了任何事访问数据库,这将需要100000次(字面上!)比在内存中执行任何缓存的查找都要长。一旦你清理了多余的SQL连接,选择了N+1方案并在RAM中缓存了常用数据,那么在更快的硬件上花钱可能比花在程序员时间上要便宜。你会建议不要使用通过T4MVC创建的常量,然后。。。它们最终输出的是相同的东西,IIRC。@安德鲁·巴伯,就我个人而言,我从未使用过T4MVC,因此无法判断它对性能的影响,但请记住,在发布模式下,两个版本之间没有性能差异,如果你说使用T4MVC最终得到的是硬编码的视图位置,则不会有任何差异。哦,是的;说得好!我的“逻辑思考”帽子今天在车里+1.