我想在局部視圖中使用字符串擴展方法。我得到以下錯誤:無法在局部視圖中使用擴展方法
'string' does not contain a definition for 'TruncateAtCharacter'
這裏是擴展方法:
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());
}
}
}
根據this previous question我需要添加命名空間的web.config,但是我已經這樣做了,我仍然收到相同的錯誤信息。奇怪的是,我確實爲擴展方法獲得了智能感知?
<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>
任何人都可以解釋這是爲什麼?
感謝
對不起,我應該提到我嘗試在部分中添加@using,並且沒有奏效。也沒有將該名稱空間聲明添加到該區域內的web.config中,也沒有將該名稱空間聲明添加到項目根目錄中的web.config。 – 2012-07-17 14:54:18
我剛剛複製你的代碼,它只有在視圖中使用@using語句時才起作用。只要在任一配置中引用命名空間都不會執行任何操作。 – 2012-07-17 14:57:48
好的。我只是在View目錄中使用web.config,並且在View本身沒有使用@using語句。我正在使用system.web.webPages.razor/namespaces元素。我的root配置文件中沒有這個元素,當我將語句添加到默認的system.web.pages中時,它也使分析器感到困惑。試試把它放在Views web.config中。 – 2012-07-17 15:01:27