2011-07-02 23 views
5

Tôi muốn tất cả các url cho hình ảnh của tôi trong ứng dụng ASP.NET MVC của tôi để có dạng:Làm thế nào tôi có thể định tuyến "/ img /" vào thư mục "/ Content/img" trong ASP.NET MVC 3?

www.mydomain.com/img/someimagename.png

Tuy nhiên, tôi hiện đang có tất cả hình ảnh của tôi trong dự án MVC của tôi trong: /Nội dung/img/thư mục.

Làm cách nào tôi có thể viết tuyến đường sẽ ánh xạ/img tới/Nội dung/img?

+0

tuyến đường sẽ không đủ. Các tuyến đường chỉ là ánh xạ giữa các URL và các phương thức hành động. – bzlm

+4

tại sao không chỉ đặt tất cả hình ảnh của bạn vào thư mục 'img'? – Buildstarted

+0

@BuildStarted Tôi cũng đang gặp phải tình huống này ... Tôi không thực sự muốn "Nội dung" trong url, nhưng đặt nó vào gốc gây ô nhiễm cho dự án. Nhưng tôi cho rằng đó là những gì tôi có để sống với. –

Trả lời

5

Hình ảnh không đi qua ngăn xếp ASP.NET. IIS xử lý các yêu cầu đó. Bạn cần viết một HttpModule nếu bạn muốn ứng dụng ASP.NET của bạn xử lý các yêu cầu hình ảnh. Blog này cho bạn biết cách thực hiện điều này: http://weblogs.asp.net/jgaylord/archive/2009/05/04/letting-asp-net-handle-image-file-extensions-in-iis-6.aspx

Nhưng một giải pháp dễ dàng hơn là chỉ cần tạo thư mục ảo trong IIS.

2

gì về phương pháp này,

public ActionResult Img(string imgURL) 
    { 
     ViewBag.imageURL = imgURL; 
     return View(); 
    } 

và quan điểm dao cạo

<img src="@Url.Content("~/Content/images/"[email protected])" /> 

hoặc trong một cái nhìn asp.net cơ bản

<img src="~/Content/images/"+ViewBag.imageURL)" /> 
+0

.... nghiêm túc ?? – RPM1984

4

Bạn có thể sử dụng quy tắc viết lại cho việc này. Thêm tuyến đường sau để ghi lại phần trong web.config:

<rule name="Img to content img"> 
<match url="^img/(.*)" /> 
<action type="Rewrite" url="/Content/img/{R:1}" /> 
</rule> 
Các vấn đề liên quan