Asp.Net Core MVC Custom Controller Oluşturma

Hüseyin Şimşek
2 min readMay 12, 2020

İlk olarak Controller sınıflarının özelliklerinden bahsetmek gerekirse HTTP isteklerine cevap vermeyi sağlayan, kullanıcıya bir etkileşim ekranı -Action- sunmaya aracılık yapan sınıflardır.

Photo by Jan Huber on Unsplash

Controller sınıflarını tanımlamanın bir kaç yolu vardır:

1- ControllerBase Sınıfından katılmış bir class ile tanımlanabilir.

public class UserController : ControllerBase{}

2- Controller Son Eki(Suffix) Alacak Şekilde İsimlendirilmiş bir class tanımlamak


public class UserController {}

3- Tanımlanan bir class’ı [Controller] attribute ile işaretlemek.

[Controller]
public class User{}

Not: Burada aynı mantıkla bir controller’ın eğer controller özelliklerine erişilmesini istemiyorsak [NonController] attribute ile işaretleriz. Böylece o controller’a HTTP istekleri ile erişemeyiz.
Bu durumu geçici olarak kapatmak istediğimiz bir controller için kullanabiliriz.

4- Bu yazının asıl konusu bu yöntemi örnekleyebilmek. Aslında bu yöntem 2. bahsettiğimiz yönteme benzer. Diyelim sonu belirlediğimiz(suffix) bir şekilde biten classları da controller olarak atayabiliriz.

Bu yöntemi kullanabilmek için bir class oluşturuyoruz:

Sonu “Denetleyici” ile Biten Class’ları Controller Yapma

Oluşturduğumuz class ControllerFeatureProvider sınıfından türetiyoruz. Türettiğimiz sınıfın bizim için önemli metodu IsController(). Bu metodu override edip istediğimiz şekilde düzenliyoruz. Yukarıdaki kod ile birlikte hem önceki yöntemler gibi Controller’lar tanımlayabilir buna ek olarak da sonu “Denetleyici” ile biten classları Controller olarak tanımlayabiliyoruz.

Tabiki bu class tanımlamak bir işimize yaramıyacak bu class’ı bir yerden çağırmamız gerekecek ki burası Startup.cs:

services.AddMvc().ConfigureApplicationPartManager(op => { op.FeatureProviders.Add(new CustomControllerFeatureProvider()); });

Şimdi bu şekilde bir Controller tanımlayalım:

public class KullaniciDenetleyici
{
public string Get()
{
return “Test”;
}
}

Bu şekilde tanımladığımızda Controller çalışacaktır ancak …/KullaniciDenetleyici/Get şekilde erişebiliyoruz. Yani son ekin atılmış haline erişemeyiz. …/Kullanici/Get şekilde erişilmez.(Bunun için bir düzenleme yapmak gerekiyor. En kısa zamanda test edip eklemeye çalışacağım :) )

--

--

Hüseyin Şimşek

I’m Huseyin, a software developer from Turkiye. I have been working in IT industry since 2018. I’m interested in Dotnet and Web Development