C# 无法在部分视图中使用扩展方法

C# 无法在部分视图中使用扩展方法,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,我试图在局部视图中使用字符串扩展方法。我得到以下错误: “string”不包含“TruncateAtCharacter”的定义 以下是扩展方法: namespace PCCMS.Core.Libraries { public static class Extensions { public static string TruncateAtCharacter(this string input, int length) { if (String.Is

我试图在局部视图中使用字符串扩展方法。我得到以下错误:

“string”不包含“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());
        }
    }
}
命名空间PCCMS.Core.Libraries{
公共静态类扩展{
公共静态字符串截断字符(此字符串输入,整数长度){
if(String.IsNullOrEmpty(input)| | input.Length
根据需要,我需要将名称空间添加到web.config,但是我已经这样做了,并且仍然收到相同的错误消息。但奇怪的是,我确实得到了扩展方法的intellisense


有人能解释为什么会这样吗


谢谢

如果名称空间声明位于根视图目录web.config的system.web.webPages.razor/namespaces元素中,则此操作应该有效。如果失败,请尝试在视图顶部使用显式@using语句,而不使用任何web.config语句。它“应该”起作用


PS是ReSharper intellisense还是VS?ReSharper明确告诉我,如果web.config条目不在范围内,则需要@using。

在VS debugger中运行时,或者从测试或生产系统运行时,是否会发生错误?确保包含扩展的模块已正确安装(并正确更新)。另外,请尝试在命令提示符下运行“iisreset”。

对不起,我应该提到我尝试在部分中添加@using,但没有成功。既没有将命名空间声明添加到区域内的web.config中,也没有将命名空间声明添加到项目根目录中。我刚刚复制了您的代码,只有在视图中使用@using语句时,它才有效。只是在两个配置中引用名称空间没有任何作用。好的。我只是让它只在Views目录中使用web.config,而在视图本身中没有@using语句。我正在使用system.web.webPages.razor/namespaces元素。我的根配置中没有该元素,当我将该语句也添加到默认的system.web.pages中时,它混淆了解析器。试着把它放在视图web.config中。@RoryMcCrossan,当你说项目根时,你是指
~/web.config
还是
~/Views/web.config
?因为如果使用Razor视图引擎,则必须在
~/Views/web.config
中声明名称空间。