ASP.NET Core 5/HtmlHelper
ASP.NET Core'da HtmlHelper'ların yerini TagHelper'lar almıştır. Ancak yine de tamlık açısından HtmlHelper'lar da verilecektir.
Partial metodu
değiştirBir view içinde başka bir view'ı render etmemizi sağlar. Örnek:
<div style="background-color:gray">
@Html.Partial("~/Views/Home/Index2.cshtml")
</div>
Burada Index2 view'ının içeriği şu anda bulunulan view'a arkaplanı gri olarak basılacaktır. Burada aklınıza bir soru takılabilir. Eğer Index2.cshtml view'ı dışarıdan veri kabul ediyorsa bu veriyi nasıl göndereceğiz. Cevap: ana view'ın controller'ından. Yani A view'ı içine bir B view'ını gömerse A'nın controller'ından A view'ına gönderilen veriler (model bazlı ve diğer veriler) otomatik olarak B view'ına da gönderilir. Bu A view'ını oluşturan diğer bütün alt view'lar için de geçerlidir. Alt view model bazlı veri alacaksa bunun alt view'ın başlığında @Model IsimAlani.Sinif
şeklinde belirtilmesi opsiyoneldir, ancak kafa karışıklığının önlenmesi açısından belirtilmesi tavsiye edilir.
İstersek yukarıda bahsedilen varsayılan durumu değiştirebiliriz. Yani alt view'a, ana view'a gönderilen verilerden başka veriler gönderilmesini sağlayabiliriz.Örnek:
<div style="background-color:gray">
@Html.Partial("~/Views/Home/Index2.cshtml",new WebApplication6.Models.User {Id=1, Name="bekir", LastName="oflaz" })
</div>
Burada ana view'a gelen nesne yerine bir User nesnesi alt view'a gönderilmektedir. Bu durumda alt view'ın @model deklarasyonuyla ilgili tipte nesne kabul ettiğini belirtmesi gerekir. Elbetteki bu durumda model yoluyla ana view'a gönderilen nesne alt view'a gönderilmez.
Partial metoduna ikinci parametreyi vererek aynı model bazlı verinin alt view'a gönderilmesinin engellenmesi diğer yollarla (ViewBag, ViewData, TempData) gönderilen verilerin gönderilmesini engellemez.
RenderPartial metodu
değiştirİşlevsel olarak Partial metoduyla aynıdır. Ancak RenderPartial() metodunun mutlaka bir C# kod bloğu içinde (küme parantezleriyle çevrelenen) çağrılması gerekir. Çünkü Partial() metodu string döndürürken, RenderPartial() void döndürür. Ayrıca RenderPartial() metodu, Partial() metoduna göre daha hızlı çalışmaktadır. Örnek:
@{
Html.RenderPartial("~/Views/Home/Index2.cshtml");
}
ActionLink metodu
değiştirURL oluşturur ve linki oluşturmak için oluşturulan HTML kodunu döndürür. Örnek:
@Html.ActionLink("Tıkla","Index","Home")
Bu örnekte sayfanın ilgili yerinde "Tıkla" metinli bir link belirecek ve bu linke tıklandığından Home controller'ının Index action'ına talep yapılacaktır.
Custom HtmlHelper oluşturma
değiştirHtmlHelper'lara istersek seçenekler ve bu seçenekler için değerler belirtebiliriz. Örnek:
@Html.TextBox("txtAdi",null,new {style="background:yellow; color:red})
İstersek de belirli bir HTML kodunu döndürecek sözde bir HTML etiketi oluşturabiliriz.