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
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. –
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ả. –
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. –