2012-07-17 26 views
6

Tôi đang cố gắng sử dụng một phương pháp mở rộng chuỗi trong một chế độ xem một phần. Tôi nhận được lỗi sau:Không thể sử dụng phương pháp mở rộng trong chế độ xem một phần

'string' does not contain a definition for 'TruncateAtCharacter'

Dưới đây là phương pháp mở rộng:

namespace PCCMS.Core.Libraries { 
    public static class Extensions { 
     public static string TruncateAtCharacter(this string input, int length) { 
      if (String.IsNullOrEmpty(input) || input.Length < length) 
       return input; 

      return string.Format("{0}...", input.Substring(0, length).Trim()); 
     } 
    } 
} 

Theo this previous question Tôi cần thêm không gian tên để web.config, tuy nhiên tôi đã làm điều này và tôi vẫn nhận được cùng một thông báo lỗi. Điều kỳ lạ là, tôi có được intellisense cho phương pháp mở rộng?

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="PCCMS.Core.Libraries.ClientWebViewPage"> 
     <namespaces> 
      <add namespace="System.Web.Mvc" /> 
      <!-- Other namespaces... --> 
      <add namespace="PCCMS.Core.Libraries" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

Mọi người có thể giải thích lý do tại sao điều này không?

Cảm ơn

Trả lời

1

này nên có tác dụng nếu việc khai báo không gian tên là trong thư mục/namespace yếu tố system.web.webPages.razor của rễ web.config xem thư mục của bạn. Nếu điều đó không thành công, hãy thử sử dụng câu lệnh @using using ở đầu Chế độ xem mà không có bất kỳ câu lệnh web.config nào. Nó 'nên' làm việc.

PS Đó có phải là ReSharper intellisense hoặc VS không? ReSharper nói rõ ràng rằng một @using là bắt buộc nếu mục nhập web.config không nằm trong phạm vi.

+0

Xin lỗi, tôi nên đề cập đến tôi đã thử thêm @using một phần và không hoạt động. Không có thêm khai báo không gian tên cho web.config trong khu vực, cũng không phải là khai báo không gian tên trong thư mục gốc của dự án. –

+0

Tôi vừa sao chép mã của bạn và nó chỉ hoạt động nếu tôi sử dụng câu lệnh @using trong chế độ xem. Chỉ việc tham chiếu không gian tên trong cả hai cấu hình sẽ không làm gì cả. –

+0

OK. Tôi chỉ có nó để làm việc chỉ bằng cách sử dụng web.config trong thư mục Views và không có câu lệnh @using trong View chính nó. Tôi đang sử dụng phần tử system.web.webPages.razor/namespaces. Tôi không có phần tử đó trong cấu hình gốc của mình và khi tôi thêm câu lệnh vào system.web.pages mặc định, nó làm lẫn lộn trình phân tích cú pháp. Chỉ cần thử đặt nó trong khung nhìn web.config. –

0

Có phải lỗi xảy ra khi chạy trong trình gỡ lỗi VS hoặc từ hệ thống kiểm tra hoặc sản xuất không? Đảm bảo mô-đun của bạn chứa tiện ích được cài đặt đúng (và được cập nhật đúng cách). Ngoài ra, hãy thử chạy "iisreset" từ dấu nhắc lệnh.

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