Yandex Metrica
.NET Core Areas View içerisinde ViewModel Tanımlama Sorunu Çözümü - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

.NET Core Areas View içerisinde ViewModel Tanımlama Sorunu Çözümü

15.05.2022 yasinsunmaz 1197 0

ASP .NET Core'da Areas üzerinden çalışma yaparken bazı sorunlar ile karşılaştım. Bu yaşadığım sorunlardan biri ViewModel tanımlama sorunuydu. Şöyleki projemde Areas adında bir klasör oluşturup içerisinde Admin adında bir are oluşturdum. Bu area içerisinde gerekli controller, view, models ve services için gerekli dosyaları hazırladım. Sonrasında da servis ve controller için gerekli kodlamaları yaptım. Sıra view tarafına geldiğinde modelimi sayfanın en üstünde @model UserViewModel şeklinde tanımlamak istediğimde hata ile karşılaştım. Aşağıdaki gibi 4 tane hata aldım. Aslında hepsi de aynı durumdan kaynaklı olarak ortaya çıktı.

Hata Çıktıları

Error CS0246 The type or namespace name 'UserViewModel' could not be found (are you missing a using directive or an assembly reference?) WebApplicationCore

Error CS0246 The type or namespace name 'UserViewModel' could not be found (are you missing a using directive or an assembly reference?) WebApplicationCore

Error CS0411 The type arguments for method 'IModelExpressionProvider.CreateModelExpression(ViewDataDictionary, Expression>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. WebApplicationCore

Error CS0246 The type or namespace name 'UserViewModel' could not be found (are you missing a using directive or an assembly reference?) WebApplicationCore

.NET Core Areas View içerisinde ViewModel Tanımlama Sorunu Çözümü

Bununla ilgili biraz araştırma yaptıktan sonra 2 farklı çözüm buldum. İlk çözüm biraz daha ilkel diyebilirim. 2. çözüm ise sorunu tüm area dizini için çözüyor.

1. Çözüm ViewModel Dizinin Tam Olarak Belirtme

Register.cshtml dosyasında @model UserViewModel yazdığımda sorun alıyordum. Bunun yerine tam dizini belirterek o modeli çağırabilir ve sorunu ortadan kaldırabilirsiniz. Yani @model UserViewModel bunu yerine @model WebApplicationCore.Areas.Admin.Models.UserViewModel gibi tanımlama ile sorun düzelecektir. Tabi sizin proje adınız ve dizininizdeki klasör yapısına uygun olarak değiştirmelisiniz.

2. Çözüm _ViewImports.cshtml Dosyası Ekleme

En iyi çözüm olan _ViewImports.cshtml dosyasını Views dizini içerisine ekleme. Aslında bu dosya proje oluşturduğumuzda views klasörü altında direk olarak gelmekte. Fakat yeni area oluşturduğumuzda bu gelmiyor. Bunu bizim eklememiz gerekiyor. Mevcut ana projedeki Views altından _ViewImports.cshtml dosyasını kopyalayıp Areas/Admin/Views dizini içerisinde yapıştırmamız yeterli.

Bu dosya içerisinde de;

@using WebApplicationCore.Areas.Admin.Models

_ViewImports.cshtml dosyası içerisine tanımlama yapmamız gerekiyor. Böylece bütün viewlerimizde models klasörü altına eklenen tüm viewmodelleri tanıyabilecek ve uzun dizin ismi ile çağırmamıza gerek kalmayacak. Yani direkt olarak @model UserViewModel şeklinde tanımlayabiliriz.

Ek Bilgi

Bu dosya içerisine sadece dizin tanımlaması değil ASP .NET Core'da kullandığımız TagHelper yapısı için de tanımlama yapabiliyoruz. cs.html dosyalarınızda TagHelper kullanmak istiyorsanız;

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

Şeklinde _ViewImports.cshtml dosyasına ekleyip kaydetmeniz yeterlidir.

Umarım faydalı olmuştur. İyi çalışmalar.

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

Conversion Failed When Converting The Nvarchar Value 'xxxx' to Data Type Int Hatası Çözümü

20.09.2022 yasinsunmaz 452 0

SQL Server'da önceden oluşturulmuş olan bir view'de bir zaman sonra veri getiremediğini ve Conversion Failed When Converting The Nvarchar Value '   ...

Could not load file or assembly 'Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' Hatası Çözümü

01.03.2022 yasinsunmaz 829 0

ASP .NET MVC ve Core projelerinde Windows Identity Foundation kullanılabiliyor. Proje içerinde bunun kullanıp kullanılmadığını bilmeden ilgili yeri çalıştırdığınızda&...

MIME type ('text/html') is not a supported stylesheet MIME type Hatası Çözümü

27.02.2022 yasinsunmaz 1592 0

Angular'da projenin tasarımını yaparken genel CSS'ler için style.css dosyamı hazırladım. Fakat projeyi çalıştırdığımda CSS kodları sayfada etkin gör...

RabbitMQ ReadOnlyMemory byte to byte[] Hatası Çözümü

09.08.2021 yasinsunmaz 615 0

RabbitMQ ile ilgili ilk çalışmamı yaparken "None Of The Specified Endpoints Were Reachable" hatası ile karşılaşmıştım. Bu hatayı RabbitMQ None Of The Specifie...

RedisConnectionException Hatası ve Çözümü: AbortOnConnectFail=false

31.07.2023 yasinsunmaz 782 0

Redis, popüler bir açık kaynaklı veri yapısı sunucusudur ve günümüzde birçok uygulama tarafından kullanılmaktadır. Ancak, bu tür veri tabanla...

ASP.NET Core Web API'de Parametre Bağlama Yöntemleri: FromQuery, FromBody ve FromRoute

12.07.2023 yasinsunmaz 1264 0

ASP.NET Core web API projeleri, istemcilerden gelen verileri API metotlarıyla etkileşimde bulunmak için kullanılır. Bu verileri doğru bir şekilde almak ve işlemek içi...

Deployment Stratejileri (Blue Green, Rolling Update/Rollback) Nedir?

23.06.2023 yasinsunmaz 641 0

Yazılım geliştirme sürecinde, uygulamaları güncellemek ve yeni sürümleri piyasaya sürmek önemli bir adımdır. Ancak, kullanıcıların kesintisiz hizmet a...

SonarQube Kurulumu: Adım Adım Kılavuz

18.06.2023 yasinsunmaz 1252 0

SonarQube, açık kaynaklı bir statik kod analizi platformudur ve geliştiricilere kod kalitesini, güvenliğini ve performansını iyileştirmeleri için yardımcı olur. ...

Active Directory LDAP İle Kullanıcı Kimlik Doğrulama .NET

05.12.2022 yasinsunmaz 2462 0

Active Directory LDAP ile kullanıcıyı belirli bir filtre üzerinde arama veya kullanıcının kimliğini doğrulama işlemleri yapabilmekteyiz. Bu LDAP protokolünde DirectorySer...

SOLID Yazılım Prensipleri

26.11.2022 yasinsunmaz 834 0

SOLID prensipleri yazılım geliştirmede başlarda anlayıp uygulaması zor olsa da buna uyarak kod geliştirmenin faydasını zamanla görebilirsiniz. Yazdığınız kodlarda sonradan yap...

Regex, Regular Expressions Genel Kullanımı

03.08.2022 yasinsunmaz 2017 0

Bir çok yazılım dilinde bazı kontroller için Regex ifadeler ihtiyaç duyabiliyoruz. Bunların en başında e-posta, telefon ve web site geliyor. Bunların doğruluğu...

Visual Studio'da Aynı Anda Birden Çok Proje Çalıştırma

21.05.2022 yasinsunmaz 3096 0

Katmanlı mimari projelerimizde ya da bir web sitenin kullanıcı arayüzü ve admin dediğimiz yönetici ekranları aynı uygulama içerisinde geliştirebiliyoruz. Admi...