2010-08-02 28 views
16

Kullanıcı dostu URL'leri göstermeye çalıştığım bir ASP.NET MVC sayfam var.ASP MVC Dostu URL'ler ve Göreli Yol Resimleri

Bu yüzden, Ev Denetleyicisi'nde, sayfanın içeriğini almak için kategoriKey değerini kabul eden bir Kategori Görünümüm var.

Örneğin: http://localhost/Home/Category/Bikes bisiklet içeriğini alır. Benim Global.asax.cs içinde

, ben bu işlemek için aşağıdaki adres:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Category", 
     "{controller}/{action}/{categoryKey}", 
     new { controller = "Home", action = "Category", categoryKey = "" }); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 
} 

Bu gayet güzel çalışıyor ve ancak, bir İçerik Yönetim sisteminden içeriği alıyorum, içerik alır , kolay düzenleme için. Eğer içerik yönetimi üzerinde bir görüntü eklediğinizde, bu göreceli bir yol ile görüntüyü ekler:

<img src="../AdminUploadContent/bikes.gif" alt="Bikes" /> 

Şimdi, git "http://localhost/Home/Category" ve bu resim etiketinin taban sayfasında ise, o kadar çeker görüntüsü. Ancak, "http://localhost/Home/Category/" u seçersem veya asıl "/ Ana Sayfa/Kategori/Bisikletler" kategorisini eklerseniz, resim görünmez. Görüntünün özellikleri "http://localhost/Home/AdminUploadContent/bikes.gif" işaret ediyor.

Göreli yolu işlemek için Global.aspx.cs dosyasına koyabileceğim bir şey var mı? İçerik yönetimini, ../../AdminUploadContent/bikes.gif eklemek için elle düzenlesem bile, ilk doğrulama işlemini gerçekleştirir.

cevap

2

Sayfanın bulunduğu geçerli sanal dizine başvurmak için göreli yolu "~ /" kullanabilirsiniz. "Src" özelliğinde senin "img" etiketi ve "~" işareti runat = "server" ayrıntısını eklemeyi deneyin: Resminiz için bir yol oluşturulurken

<img runat="server" src="~/AdminUploadContent/bikes.gif" alt="Bikes" /> 
+4

asp.net Web formları deyimini asp.net mvc ile karıştırmanızı önermem. Bunun için

Bikes
Roman

35

Url.Content yöntemi kullanın.

<img src="<%= Url.Content("~/AdminUploadContent/bikes.gif") %>" /> 
+0

runat = "server" gerekli değil, bu durumda –

+0

haklısınız. onu düzeltti. – marcind

+0

@marcind, merhaba, Imagepath'i veritabanında: c: // user/tom/images' olarak kaydediyorum, neden görüntüleyemiyorum, neden? – stom

0

Gerektiğinde Referer işleme göre ../../img.png gelen yolu yeniden yazacak özel bir http modülü uygulayabilirsiniz:

<img src="@Url.Content("~/AdminUploadContent/bikes.gif")" /> 

veya WebFormları kullanılıyorsa

motorunu görmek Örneğin, http başlık.

0

Bu da çalışır.

<img src="@Url.Content("~/Images/yourimage.png")"/>