İçeriğe atla

ASP.NET Core 5/UrlHelper

Vikikitap, özgür kütüphane

Action metodu

[değiştir]

Verilen controller ve action'a ait URL'i oluşturur. Örnek:

string url = Url.Action("Index","Home",new { id = 5 });

Yukarıdaki url değişkeninin tuttuğu değer /Home/Index/5 olacaktır. Yani üretilen URL domain'i içermemektedir. Ayrıca controller ve action dışındaki parametreler anonim tip nesnesi üretimi yoluyla verilmektedir. Üretilen URL Startup.cs dosyasındaki rota tanımlamasıyla uyumlu olacaktır.

[değiştir]

Kullanımı Action() metoduyla aynıdır. Tek farkı tam URL'yi üretmesidir. Örnek:

string url = Url.ActionLink("Index","Home",new { id = 5 });

Benim bilgisayarımda burada üretilen URL http://localhost:5000/Home/Index/5 olmaktadır. Kuşkusuz projenizi bir sunucuya yüklediğinizde gerçek URL üretilecektir.

RouteUrl metodu

[değiştir]

Aktif olan talep için belirli bir rota şablonuna uygun URL oluşturur. Örnek:

string url = Url.UrlRoute("Default");

Örneğin bu talep Home controller'ının içindeki Index action'ını tetiklemişse ve ekstra olarak id için 5 parametresi verilmişse üretilen URL /Home/Index/5 olacaktır. Diğer metotlar belirtiğimiz URL'i döndürürken bu metot aktif URL'le işlem yapar.

ActionContext özelliği

[değiştir]

Aktif URL'e ait bilgi alabildiğimiz özelliktir. Örnek:

@{
    var url = Url.ActionContext.RouteData.Values;
}
Controller: @url["controller"] <br />
Action: @url["action"] <br />
Id: @url["id"]

Url.ActionContext.RouteData.Values bir sözlük döndürür. Bu sözlüğün her bir ögesi bir KeyValuePair'dır. İstersek foreach döngüsü ile bu sözlük üzerinde dönerek her bir anahtar-değer çiftini ayrı ayrı da elde edebiliriz. Kuşkusuz bir URL'deki parametreleri her zaman ezbere bilemeyebiliriz. Bütün parametrelerin parametre ismiyle birlikte bir anahtar-değer çifti kümesinde tutulması, istediğimiz zaman bu kümedeki tek bir parametreyi almak işimizi çok kolaylaştırcaktır. İstersek bir parametrenin URL'de olup olmadığını şöyle anlayabiliriz:

@{
	var url = Url.ActionContext.RouteData.Values;
	if(url.ContainsKey("id"))
	{
		<text>Id parametresi var.</text>
	}
	else
	{
		<text>Id parametresi yok.</text>
	}
}