ASP.NET Core 5/UrlHelper
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.
ActionLink metodu
[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>
}
}