Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
13 yazı bulundu #aspnet-core-mvc
.NET 8'den .NET 11'e MVC ve Razor Pages'te Gelenler
Backend SERİ 13

.NET 8'den .NET 11'e MVC ve Razor Pages'te Gelenler

.NET 8 ve 9'un desteği 10 Kasım 2026'da bittiği için MVC ve Razor Pages uygulamalarının hedefi .NET 10. Aynı projeyi net8.0 ve net10.0 ile çalıştırıp cookie auth'un API endpoint'lerinde 302 yerine 401 dönmesini, Minimal API form binding farkını, ASP0026 uyarısını ve RazorComponentResult'u gösteriyor, .NET 11'in MVC maddelerini ve bir yükseltme kontrol listesini veriyoruz.

8 Kas 2026 10 dk 4
ASP.NET MVC 5'ten ASP.NET Core MVC'ye Geçiş: Global.asax, Web.config, HtmlHelper ve Bundling'in Karşılıkları
Backend SERİ 12

ASP.NET MVC 5'ten ASP.NET Core MVC'ye Geçiş: Global.asax, Web.config, HtmlHelper ve Bundling'in Karşılıkları

MVC 5'ten ASP.NET Core'a geçişte Global.asax Program.cs'e, Web.config Options'a, HttpModule middleware'e, child action view component'e, bundling MapStaticAssets'e dönüşür; büyük uygulama YARP fallback ile parça parça taşınır. @helper ve @Html.Action'ın gerçek derleme hatalarını, System.Web adapters'taki CS0104 tuzağını ve Upgrade Assistant'ın yerini gösteriyoruz.

8 Kas 2026 11 dk 4
htmx ile Razor Pages: SPA Yazmadan Etkileşimli Arayüz, Partial Yanıtlar ve Antiforgery
Backend SERİ 11

htmx ile Razor Pages: SPA Yazmadan Etkileşimli Arayüz, Partial Yanıtlar ve Antiforgery

htmx ile Razor Pages handler'ları HX-Request header'ına göre tam sayfa ya da yalnız partial döner; canlı arama, sonsuz scroll ve satır içi düzenleme JSON ve SPA olmadan çalışır. Antiforgery token'ını hx-headers ile taşıyor, Vary ve history restore tuzaklarını, htmx 2'nin 4xx davranışını ve htmx 4 farklarını gerçek isteklerle gösteriyoruz.

8 Kas 2026 10 dk 4
MVC ve Razor Pages'te Localization: IStringLocalizer, IViewLocalizer, Request Culture ve Türkçe "i" Tuzağı
Backend SERİ 10

MVC ve Razor Pages'te Localization: IStringLocalizer, IViewLocalizer, Request Culture ve Türkçe "i" Tuzağı

UseRequestLocalization her istek için kültürü query string, cookie, Accept-Language ya da URL'den seçer; .resx, IViewLocalizer ve DataAnnotations mesajları bu kültürle çevrilir. Bookstore kataloğunu TR/EN yapıyor; tr ile tr-TR farkını, query string'de 25,5'in 255 olmasını, "C" formatı ve Türkçe i tuzağını gerçek çıktılarla gösteriyoruz.

8 Kas 2026 11 dk 4
Static Asset'ler ve UI Altyapısı: MapStaticAssets, Fingerprinting, CSS Isolation ve Client Kütüphaneleri
Backend SERİ 09

Static Asset'ler ve UI Altyapısı: MapStaticAssets, Fingerprinting, CSS Isolation ve Client Kütüphaneleri

MapStaticAssets dosyaları build sırasında keşfedip gzip/Brotli ile sıkıştırıyor, fingerprint'li URL'lere bir yıllık immutable cache veriyor. Gerçek header'larla ölçüyor, .NET 10 MVC template'inde MapControllerRoute(...).WithStaticAssets()'in neden hiçbir şey yapmadığını ve düzeltmesini, CSS isolation'daki tag helper tuzağını ve LibMan kullanımını gösteriyoruz.

8 Kas 2026 10 dk 5
Razor Pages: PageModel, Handler Method'ları, Page Routing ve Ne Zaman MVC Yerine
Backend SERİ 08

Razor Pages: PageModel, Handler Method'ları, Page Routing ve Ne Zaman MVC Yerine

Razor Pages'te @page ile dosya kendisi endpoint olur, PageModel'deki OnGetAsync ve OnPostDeleteAsync gibi handler'lar action'ların yerini alır. Bookstore yönetim CRUD'unu yeniden yazıyor; SupportsGet, TempData, AuthorizeFolder ve page filter'ları, eşleşmeyen handler'ın neden 500 verdiğini ve MVC ile dosya düzenini gerçek çıktılarla inceliyoruz.

8 Kas 2026 13 dk 4
Server-Side ve Client-Side Validation: DataAnnotations, ModelState, Unobtrusive Validation ve Custom Attribute'lar
Backend SERİ 07

Server-Side ve Client-Side Validation: DataAnnotations, ModelState, Unobtrusive Validation ve Custom Attribute'lar

MVC'de validation iki katmanlı: DataAnnotations ve ModelState sunucuda zorunlu, data-val-* ile çalışan jQuery Unobtrusive Validation yalnız kullanıcı deneyimi. IValidatableObject, AddModelError, [Remote], IClientModelValidator'lı custom attribute ve Türkçe mesajları gerçek tarayıcıda deniyor; Türkçe kültürde "1.5" fiyatının sessizce 15 olarak kaydedildiğini ve type="number" ile __Invariant'ın bunu nasıl düzelttiğini gösteriyoruz.

8 Kas 2026 12 dk 4
MVC ve Razor Pages'te Formlar: Model Binding, Post-Redirect-Get, Antiforgery ve Overposting
Backend SERİ 06

MVC ve Razor Pages'te Formlar: Model Binding, Post-Redirect-Get, Antiforgery ve Overposting

MVC controller'larında form tag helper'ı antiforgery token'ı üretir ama doğrulamaz: token'sız curl isteği kitabı kaydetti, AutoValidateAntiforgeryTokenAttribute ile 400 oldu. Post-Redirect-Get ve TempData'yı, fetch ile header'da token göndermeyi, koleksiyon/nested object/checkbox/enum binding'ini ve indeks boşluğunu, entity bind edince stoğu 999 yapan overposting'i ve [Bind]'ın güncellemede veri silen sınırını gerçek isteklerle görüyoruz.

8 Kas 2026 12 dk 5
ASP.NET Core Tag Helper'lar: Yerleşik Tag Helper'lar ve Kendi Tag Helper'ını Yazmak
Backend SERİ 05

ASP.NET Core Tag Helper'lar: Yerleşik Tag Helper'lar ve Kendi Tag Helper'ını Yazmak

Tag helper, Razor'daki HTML etiketini sunucuda işleyen ve derleme anında bağlanan bir C# class'ıdır; asp-for tek başına id, name, label, input tipi ve data-val attribute'larını üretir. Yerleşik anchor, form, input, select, environment ve cache tag helper'larının gerçek çıktısını, HTML Helper farkını ve enum attribute'unda @ unutunca kırılan build'i görüp kendi <status-badge> ve yetkiye göre gizlenen <secure-link> tag helper'larımızı yazıyoruz.

8 Kas 2026 11 dk 3
Partial View, View Component ve Razor Component: MVC'de UI Parçalarını Yeniden Kullanmak
Backend SERİ 04

Partial View, View Component ve Razor Component: MVC'de UI Parçalarını Yeniden Kullanmak

Verisi çağıranda olan tekrar eden HTML için partial view, her sayfada görünen ve verisini kendi getiren parça için view component, Blazor'a köprü ya da ileride interaktif olacak parça için Razor component kullan. Partial içinden DbContext çağırınca sorgu sayısının 3'ten 7'ye çıktığını ölçüyor, sepet özeti view component'ini, controller'dan ViewComponent() dönmeyi ve <component> tag helper'ının Static ve ServerPrerendered modlarını görüyoruz.

8 Kas 2026 11 dk 4
Razor Syntax ve Layout'lar: @ İfadeleri, HTML Encoding, _Layout, Section'lar, _ViewStart ve _ViewImports
Backend SERİ 03

Razor Syntax ve Layout'lar: @ İfadeleri, HTML Encoding, _Layout, Section'lar, _ViewStart ve _ViewImports

Razor, @ ile yazılan her değeri varsayılan olarak HTML encode eder; bu XSS'i kapatır ama Türkçe karakterleri de &#x131; gibi entity'lere çevirir, WebEncoderOptions ile düzeltilir. Implicit ve explicit expression farkını, Html.Raw'ın ve JavaScript'e '@Model' gömmenin tehlikesini, Json.Serialize'ı, section'ları, _ViewStart/_ViewImports hiyerarşisini ve nested layout'ta kaybolan section hatasını gerçek çıktılarla görüyoruz.

8 Kas 2026 11 dk 4
ASP.NET Core MVC Pattern'i Pratikte: Controller, View, ViewModel ve Conventional Routing
Backend SERİ 02

ASP.NET Core MVC Pattern'i Pratikte: Controller, View, ViewModel ve Conventional Routing

ASP.NET Core MVC'de controller Controller'dan türer, view'ı adıyla Views/<Controller> ve Shared klasörlerinde bulur, sayfanın verisini ViewBag yerine tip güvenli bir ViewModel ile alır. dotnet new mvc yapısını, conventional routing'i, RedirectToAction'ı, Admin area'sını ve route sırası değişince link'lerin sessizce yanlış adres ürettiği gerçek bir hatayı Bookstore üzerinde görüyoruz.

8 Kas 2026 11 dk 4
Blog Haritası