Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Yazılım Soruları

0

asp.net de url deki index.aspx değilde anasayfa olarak görünmesi - ASP.NET Routing

asp.net de sayfa yüklendiğinde ;
Örnek Olarak :
"  http://www.yazilim.cevapsitesi.com/index.aspx   " gibi görünmesini değilde 
"  http://www.yazilim.cevapsitesi.com/Anasayfa    " olarak görünsün istiyorum nasıl yaparım.

1 Cevap

0
Bunun için routing (yönlendirme) kullanılıyor.

Routing yönteminde, yapılan isteklerdeki web site adresinden sonra gelen kısmın (path) yapısına bakarak uygun sayfalara yönlendirme yapılıyor.

Örneğin yapılan istek:

http://cevapsitesi.com/urunler/kategori/1

ise, bu adresteki

/urunler/kategori/1

kısmına bakılıyor.

Bu yönlendirmeler Global.asax dosyası içindeki ApplicationStart olayının içinde tanımlanacak. Global.asax dosyası yoksa Visual Studio'dan oluşturabilirsin. Dosya oluştuğunda zaten Application_Start olayını karşılayan yordamı göreceksin. Tanımlamalar bunun içinde yapılacak.

Yönlendirmeler için System.Web.Routing  isim alanı kullanılıyor. Bunu Global.asax dosyanın üstündeki import  bölümünde şöyle bildirmelisin.

<%@ import namespace="System.Web.Routing" %>

Arkasından Application_Start olayı içinde yönlendirmelerini RouteTable.Routes  statik kolleksiyonununa eklemelisin. RouteCollection sınıfından olan Routes özelliğinin MapPageRoute yöntemiyle yönlendirme ekleniyor.

Bunun bir kaç kullanımı var. En temel olanı şöyle:

MapPageRoute(Yönlendirme Adı,
             Yönlendirme Yolu ve parametreler,
             URL'nin yönlendirileceği gerçek sayfa)

Örneğin:

void Application_Start(object sender, EventArgs e) 
{
    RouteCollection routes = RouteTable.Routes;
routes.MapPageRoute("Ürün Görüntüleme", "Urunler/{KategoriAdi}/{*UrunKimligi}", "~/UrunGoruntule.aspx"); routes.MapPageRoute("Sayfalar", "Sayfalar/{SayfaAdi}", "~/Sayfalar.aspx"); }

Bu örnekte iki tane yönlendirme yapılıyor.

Süslü parantez içinde verilenler parametreler. UrunKimligi parametresinin yanındaki yıldız bu parametrenin kullanılmayabileceğini bildiriyor.

Son parametre ise yönlendirmenin yapılacağı asıl sayfa.

Belirtilen bir yönlendirme ile eşleşen bir istek yapıldığında ilgili sayfa yükleniyor.

Örneğin birinci yönlendirme ile şunlar eşleşebilir.

http://example.com/Urunler/Elbise/4
http://example.com/Urunler/123/BirMetin
http://example.com/Urunler/Pantolon
http://example.com/Urunler/123

Görüldüğü gibi parametrelerin veri tipi yok, deseni, (Urunler/ metninden sonra bir metin eğer varsa sonra bir / ve bir metin) uysun yeter. Bu bilgiler yönlendirilen sayfaya aynı QueryString (adres çubuğundaki sorgu dizesi) gibi string veriler olarak gidecek ve tipleriyle QueryString'de olduğu gibi ilgili sayfada uğraşacaksın.

Yönlendirilen sayfa içinden Page_Load yordamında (veya başka yerde de olabilir);

Bir parametrenin gelip gelmediğini test etmek için (örneğin UrunKimligi):

if (Page.RouteData.Values.ContainsKey("UrunKimligi"))
{
...
}

Bir parametrenin değerini almak için:
(Örneğin http://example.com/Urunler/Elbise/4 şeklinde gelen bir istekteki ürün kimliği parametresine karşılık gelen 4 değerini)

string stringUrunKimligi = Page.RouteData.Values["UrunKimligi");

Belirli bir yönlendirme ile bu sayfaya gelinip gelinmediğini öğrenmek için (örneğin "Ürün Görüntüleme"):

if (Page.RouteData.Route == RouteTable.Routes["Ürün Görüntüleme"]) 
{
...
}

ifadelerini kullanabilirsin.

Bir parametre için değer gelmemişse (üstteki http://example.com/Urunler/Pantolon adresindeki gibi), bu değer için boş bir string alırsın. Bunu da;

if (stringUrunKimligi == String.Empty)
{
...
}
şeklinde test edebilirsin.


Cevaplayan: 13.06.16 19:26
cevapsitesi
102,034p 16ü
Cevabı seçen: 15.06.16 00:26
canora
101,387p 4ü