İçeriğe atla

ASP.NET Core 5/HtmlHelper

Vikikitap, özgür kütüphane

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ştir]

Bir 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");
}
[değiştir]

URL 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ştir]

HtmlHelper'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.