2010-08-02 23 views
16

Tôi có trang ASP.NET MVC, nơi tôi đang cố hiển thị URL thân thiện.ASP MVC Friendly URL và Hình ảnh đường dẫn tương đối

Vì vậy, tôi có Chế độ xem danh mục trong Bộ điều khiển chính, chấp nhận giá trị categoryKey để lấy nội dung của trang.

Ví dụ: http://localhost/Home/Category/Bikes lấy nội dung xe đạp.

trong Global.asax.cs của tôi, tôi đã phần sau đây để xử lý này:

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 
); 
} 

này hoạt động tốt, và nó được nội dung, tuy nhiên, tôi nhận được các nội dung từ một hệ thống quản trị nội dung , để chỉnh sửa dễ dàng. Khi bạn thêm một hình ảnh về quản lý nội dung, nó bổ sung thêm hình ảnh với một đường dẫn tương đối:

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

Bây giờ, nếu tôi goto "http://localhost/Home/Category", và rằng thẻ hình ảnh có trên trang cơ sở, nó sẽ kéo lên hình ảnh. Tuy nhiên, nếu tôi goto "http://localhost/Home/Category/" hoặc thêm danh mục thực tế "/ Home/Category/Bikes" /, hình ảnh sẽ không hiển thị. Các thuộc tính của hình ảnh đang trỏ đến "http://localhost/Home/AdminUploadContent/bikes.gif".

Có điều gì tôi có thể đặt trong tệp Global.aspx.cs để xử lý đường dẫn tương đối không? Ngay cả khi tôi chỉnh sửa thủ công quản lý nội dung để thêm ../../AdminUploadContent/bikes.gif, nó đang cắt bỏ đầu tiên ../, vì nó đang thực hiện một số xác thực.

Trả lời

2

Bạn có thể sử dụng đường dẫn tương đối "~ /" để tham khảo thư mục ảo hiện tại nơi trang được đặt. Cố gắng thêm runat = "server" thuộc tính để "img" thẻ của bạn và "~" đăng nhập "src" thuộc tính:

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

Tôi sẽ không khuyên bạn nên trộn thành phần biểu mẫu Web asp.net với asp.net mvc. Chú ý đến điều này

Bikes
Roman

35

Sử dụng phương pháp Url.Content khi tạo ra một đường dẫn đến hình ảnh của bạn.

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

hoặc nếu sử dụng WebForms xem động cơ:

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

runat = "máy chủ" là không cần thiết trong trường hợp này tôi nghĩ rằng –

+0

bạn là đúng. sửa nó. – marcind

+0

@marcind, xin chào, tôi đang lưu Imagepath trong cơ sở dữ liệu dưới dạng: 'c: // user/tom/images', tôi không thể truy xuất nó trong chế độ xem, tại sao? – stom

0

Bạn có thể thực hiện một mô-đun tùy chỉnh http rằng sẽ viết lại đường đi từ ../../img.png liên quan đến xử lý cần thiết Referer tiêu đề http, ví dụ.

0

Điều này cũng hoạt động.

<img src="@Url.Content("~/Images/yourimage.png")"/> 
Các vấn đề liên quan