2013-03-14 11 views
14

tôi có một dự án lớp THƯ VIỆN (NotificationTemplate) mà trở lại nội dung của file:đường dẫn đến tập tin trong lớp học thư viện

public static class Template 
{ 
    public static string NotificatioEmail 
    { 
     get { return File.ReadAllText("Templates\\NotificatioEmail.cshtml"); } 
    } 
} 

Trong dự án này nằm thư mục Templates với NotificatioEmail.cshtml tập tin.

Ngoài ra, tôi có hai ứng dụng: ứng dụng giao diện điều khiển và ứng dụng ASP.NET MVC. Các tập tin trả lại tốt trong ứng dụng giao diện điều khiển, nhưng trong MVC tôi nhận được lỗi file not found. Làm thế nào để viết phổ?
Tôi tryed này:

Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Templates", 
      "NotificatioEmail.cshtml") 

nhưng BaseDirectory không bao gồm bin thư mục.

Trả lời

31

Như bạn đã nói BaseDirectory hoạt động cho các ứng dụng giao diện điều khiển. Đối với các ứng dụng MVC, thay vào đó hãy sử dụng RelativeSearchPath.

Vì vậy, bạn có thể sử dụng mã này cho cả hai nền tảng

var appDomain = System.AppDomain.CurrentDomain; 
var basePath = appDomain.RelativeSearchPath ?? appDomain.BaseDirectory; 
Path.Combine(basePath, "Templates", "NotificatioEmail.cshtml"); 
+1

Đây là công trình cho asp.net, nhưng không làm việc trong giao diện điều khiển Nhờ có chương trình. Nó bằng null. – user348173

+1

@ user348173 bạn có thể thực hiện 'System.AppDomain.CurrentDomain.RelativeSearchPath ?? System.AppDomain.CurrentDomain.BaseDirectory'? –

+0

Có, Nhưng nó có tốt không? Tôi muốn thấy cách khác. – user348173