2010-07-29 7 views
8

Şimdi MVC 3 Preview 1 burada, Razor (.cshtml) view motorunu kullanabiliriz. Bunları kullanmayı düşünmüyorsanızKullanmayı planlamıyorsam, .aspx/.ascx aramasını kaldırmaya değer miydim?

The view 'a' or its master was not found. The following locations were searched: 
~/Views/Home/a.aspx 
~/Views/Home/a.ascx 
~/Views/Shared/a.aspx 
~/Views/Shared/a.ascx 
~/Views/Home/a.cshtml 
~/Views/Shared/a.cshtml 

o .aspx/.ascx arama kaldırmak için değer olurdu: bir görünüm bulamazsanız bu hatayı alıyorum?

+0

(http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump -Start/Building-Web-Apps-ASPNET-Jump-Start-02-Building-and-Deploying-Websites-ile-ASPNET-MVC-4), Scott Hanselman bunu yaparak küçük bir performans artışı elde edebileceğinizi söylüyor. – DOK

cevap

17

Bundan kayda değer bir performans artışı sağlayacağınızdan şüpheliyim. Sadece bir dosya kontrolü ve eğer motor tarafından önbelleğe alınmışsa, herhangi bir performans artışı yoktur. Mikro optimizasyon olarak adlandırıyorum!

Eğer WebFormları kullanarak olmayacak biliyorum sanırım, sadece bu yüzden gibi görünüm motorları listeden kaldırmak olabilir:

ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new RazorViewEngine()); 

Bu şekilde o aspx/ASCX kontrol etmeyeceği Dosyalar.

+2

İlk seçeneği tavsiye ederim, çünkü biz (MVC ekibi) şu anda bu koleksiyondaki herhangi bir belirli bir görünüm motoruna uymuyor. – marcind

+0

@marcin: İstenmeyen Görünüm Motorlarını bulmak ve dizinlerini bularak ve kaldırarak bunları el ile kaldırmak en iyisidir. Bu şekilde, MVC'nin ekstra görünüm motorları eklediğinde (ya da diğer bileşenler kendi görünüm motorlarını kaydettirirse) bunları kaldırmayacaksınız. – Eilon

+0

Doğru, bunu da düşündüm, ama sadece Cshtml kullanmak istediği için eklemedim. Böyle bir şeye benzeyebilir: 'ViewEngines.Engines.Remove (ViewEngines.Engines.OfType (). First());' Komik Bunu yazmanın kaç farklı yolu vardır! – aolde

4

Kod revize edilmiştir:

bir [MVC4 Jump Start videoda] olarak
ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new RazorViewEngine()); 
İlgili konular