HtmlHelper yerine TagHelper kullanılıyor, HtmlHelper daha maliyetli oluyor.
Elimizde bir view var, bu view i controllerdan gelen istek neticesinde render etmeyeceğiz. Bir view deyiz view esnasında belirli bir noktada Html.Partial ile hedef view i çağırıp onu render edip çıktısını oraya verdirebiliriz. İlla bir controllerdan istek gitmesine gerek yok ilgili view e.
Render edilen view’e ilgili action’dan model/data gönderilebilir.
User nesnesini Model bazlı gönderdik. GetProducts.cshtml e User geldiği halde Html.Partial kısmına misal Product göndermemiz gerekebiliyor (Model bazlı product göndereceğiz)
GetProducts.cshtml e model bazlı user geldiyse çağırmış olduğu partial a da model bazlı user gider.
Bunu çağıran view in model ının dışında farklı bir parametre gönderecekse yukarıdaki şekilde gösterildiği gibi , elde varsa Product nesnesi kullanılır yoksa oluşturabiliriz.
View de user ken partial view de ekstradan farklı bir model gönderiyorsak artık partialview sadece o model ı karşılayabilir.
Html.Partial direk Razor da scope a gerek kalmadan çağırabilirken, Html.RenderPartial scope içinde çağrılmak zorunda bunun sebebi;
Html.Partial geriye string döndürürken , Html.RenderPartial void döndürüyor (yani herhangi bir şey döndürmüyor, tetikleyebilmek için scope içerisinde c# kuralları ile tetiklemek gerekir) İşlevsel olarak fark etmiyor sonuç olarak aynı sonucu alıyoruz.
bunlar çok maliyetli olduğu için bunların yerine TagHelper lar kullanılıyor.