ViewStart ViewImports Nedir? – ASP.NET-MVC

ViewStart Dosyası

Her View veya sayfadan önce çalıştırılması gereken kod dosyalarımızı yerleştirdiğimiz _ViewStart.cshtml dosyasıdır.

ViewStart dosyası aslında normal bir view’e çok benzer ve aynı uzantıya (.cshtml) sahiptir, bu yüzden onu kullanmak için Views klasörünüze _ViewStart.cshtml adlı bir View eklemelisiniz. ASP.NET MVC’nin otomatik olarak bir ViewStart dosyası arar ve gerçek page/view yorumlamadan önce onu yorumlar. Bu yapı, tüm sayfalar için varsayılan bir Layout belirtmek için kullanacağımız durumda olduğu gibi ortak işlevleri belirlemenize olanak tanır.

ViewStart Dosyası Ekleme

Views klasörümüzün kök dizinine bir view ekliyoruz.

Layout dosyalarında olduğu gibi, bunun yalnızca normal bir View olmadığını belirtmek için dosya adının önüne bir alt çizgi gelmelidir.

Bu dosyanın içeriği, normal bir view’i yorumlanmadan önce yapmanız gereken şey olmalıdır. Bu durumun birçok kullanım örneği vardır, ancak bir varsayılan bir Layout ekleme durmunu inceleyeceğiz.

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Oluşturduğumuz ViewStart dosyamıza yukarıda kodu yazıyoruz. Artık projenize bir View eklediğinizde, ekran görüntüsünde görüldüğü gibi “Use a layout page (Bir düzen sayfası kullan)” seçeneğini işaretleyebilirsiniz, ancak metin alanını boş bırakın – Layout’unuz otomatik olarak yeni View’inize uygulanacaktır. Artık her View için Layout özelliğini manuel olarak ayarlamanız gerekmiyor!

Birden Fazla ViewStart Dosyası Ekleme

Çoğu proje için, büyük olasılıkla yalnızca bir adet ViewStart dosyanız olacaktır ve bu dosya en yaygın olarak Views klasörünüzün kök dizinine yerleştirilir. Ancak, daha büyük projelerde, genellikle belirli bir klasördeki View’lere daha spesifik talimatlar vermek için birden fazla ViewStart dosyasına sahip olmayı uygun bulabilirsiniz. Neyse ki, ViewStart sistemi hiyerarşiktir, yani ASP.NET MVC, önce istenen View ile aynı klasörde bir ViewStart dosyası arayacak ve bulunamazsa klasör hiyerarşisini yukarı taşıyacaktır.

Elbette bunu kendi avantajınıza kullanabilir ve Views alt klasörlerinizden birinde başka bir ViewStart dosyası oluşturabilirsiniz – bu ViewStart dosyası daha sonra bu klasörde bulunan tüm View’ler için kullanılacaktır.


ViewImport Dosyası

ASP.NET MVC ve Razor view’lerle çalışmak için birçok gelişmiş işlevselliğe sahiptir. Örneğin Razor View’lerinizden .NET framework’ün tiplerine veya kendi oluşturduğunuz nesnelere başvurabilirsiniz. Ancak burada önemli bir nokta bir istek ilk olarak Controller’dan geçerek Viewlere ulaşsa da bu iki yapının tamamen ayrı olduğunu unutmamak gerekir. Bu nedenle Controller’ınızda bulunan tüm using ifadeleriniz sizin View’leriniz için herhangi bir anlam ifade etmez. Bu nedenle, kullandığınız referansları aşağıdaki gibi view yapınızı da eklemeniz gerekmektedir.

@MyProject.Helpers.StringHelper.GetSummary(longString)

Veya bir using ifadesi kullanarak bir namespace ekleme.

@using MyProject.Helpers

Ancak, dahil etmek istediğiniz tüm namespace’ler için bu eylemi tüm View’lerinizde yapmanız gerekir. Bu da çok fazla iş yükü demektir.

İşte tam burada ASP.NET MVC ViewImport konu başlığı ile bize yardımcı olur. Burada View klasörümüzün içerisine _ViewImports.cshtml adlı bir dosya dahil edilerek tüm ortak işlevler ve içe aktarmalar burada tanımlanır ve tüm View’lerimiz için merkezi bir nokta görevi üstlenir.

_ViewImports.cshtml dosyası projemize eklenen View’ler oluşturulmadan önce tüm View’lerimiz için çağrılır.

_ViewImports.cshtml dosyası, yalnızca genel bir kullanım ifadeleri kümesinden daha fazlası için kullanılabilir. Aşağıdaki Razor yönergelerini destekler:

  • @using
  • @inject
  • @model
  • @inherits
  • @addTagHelper
  • @removeTagHelper
  • @tagHelperPrefix

_ViewImports Dosyası Ekleme

Projenize bir _ViewImports.cshtml dosyası eklemek için, _ViewStart.cshtml dosyası için yaptığımız gibi yapın. Genellikle Views klasörünüzün kök dizinine yerleştirilmelidir:

Dosyanın adı _ViewImports olmalıdır. (ön ekli alt çizgiye dikkat edin – bu önemlidir!):

Eklendikten sonra dosyaya paylaşılan direktivler eklemeye başlayabilirsiniz – otomatik olarak tüm View’lerinize uygulanacaktır.