2013-04-18 35 views
16

Có cách nào dễ dàng (tích hợp sẵn) trong chế độ xem asp.net mvc để nhận đường dẫn tuyệt đối của tệp trong thư mục nội dung không?Nhận đường dẫn tuyệt đối của tệp trên nội dung

Hiện nay tôi đang sử dụng

@Url.Content("~/Content/images/logo.png") 

Nhưng con đường trở lại không phải là tuyệt đối.

Tôi biết người ta có thể xây dựng helper riêng của mình đối với trường hợp như vậy nhưng tôi muốn biết nếu có bất kỳ cách dễ dàng hơn ...

+0

http://stackoverflow.com/a/1268755/802791 –

+0

có thể trùng lặp của [ASP.NET MVC - Tìm đường dẫn tuyệt đối tới thư mục App \ _Data từ bộ điều khiển] (http://stackoverflow.com/questions/1268738/asp-net-mvc-tìm-tuyệt đối-đường dẫn-đến-ứng dụng-dữ liệu-thư mục-từ-bộ điều khiển) –

+0

Tôi phải kiểm tra khi hệ thống trực tuyến khi tôi sử dụng nó để gửi email. Sẽ cho bạn biết ngày mai. Cảm ơn bạn. – mosquito87

Trả lời

1
HttpContext.Current.Server.MapPath("~/Content/images/logo.png"); 
+0

Đầu ra của cái này là: C: \ Users \ ... \ Projects \ ... \ Content \ images \ logo.png Điều tôi thực sự cần là: http: // localhost: 57001/Nội dung/hình ảnh /logo.png (trong môi trường phát triển) và http://www.mydomain.com/Content/images/logo.png (trong môi trường sản xuất) – mosquito87

+3

@ mosquito87 Từ cách câu hỏi của bạn được viết, nó không thực sự rõ ràng những gì bạn muốn, vì vậy câu trả lời là chính xác liên quan đến những gì bạn đã viết (mặc dù không liên quan đến những gì bạn đã có trong tâm trí). Vì vậy tôi không tin rằng nó xứng đáng với tất cả các phiếu bầu mà nó nhận được. – jahu

+0

Dang, bạn đã đưa anh ta đến đó: Anh ta dựa vào bối cảnh của mọi người đọc câu hỏi khi biết phát triển web là gì. – Josiah

5

Url.Content không trả lại đường dẫn tuyệt đối. Những gì bạn muốn là tên miền (và cổng). Bạn có thể lấy tên miền hiện tại bằng cách sử dụng:

Request.Url.Authority 

Sau đó kết hợp chuỗi này với chuỗi đường dẫn tuyệt đối của hình ảnh của bạn. Nó sẽ trả về tên miền và nếu bạn đang ở trên một cổng khác cũng sẽ bao gồm số cổng.

+2

Bạn cũng cần phải thêm Đề án. Đôi khi như thế này: string.Format ("{0}: // {1} {2}", Request.Url.Scheme, Request.Url.Authority, Url.Content ("~/Content/images/logo.png")) – vfportero

24

này làm việc cho tôi:

Một helper:

using System; 
using System.Web; 
using System.Web.Mvc; 

public static class UrlExtensions 
{ 
    public static string Content(this UrlHelper urlHelper, string contentPath, bool toAbsolute = false) 
    { 
     var path = urlHelper.Content(contentPath); 
     var url = new Uri(HttpContext.Current.Request.Url, path); 

     return toAbsolute ? url.AbsoluteUri : path; 
    } 
} 

Cách sử dụng trong cshtml:

@Url.Content("~/Scripts/flot/jquery.flot.menuBar.js", true) 

// example output: 
// http://example.com/directory/Scripts/flot/jquery.flot.menuBar.js 
+0

đẹp nhất (Y) cảm ơn rất nhiều. – Orhaan

11

này sẽ tạo ra một địa chỉ tuyệt đối cho một hình ảnh (hoặc file)

Request.Url.Scheme + "://" + Request.Url.Authority + Url.Content("~/Content/images/logo.png") 
+0

Cảm ơn bạn, tôi đã tìm kiếm một giải pháp tốt cho giờ trước. và của bạn hoạt động rất tốt. –

1
new Uri(Request.Url, Url.Content("~/Content/images/logo.png")) 

điều này gọi .ToString() của Uri. Bạn cũng có thể đặt Uri vào một biến và gọi .AbsoluteUri.

Các vấn đề liên quan