无法在局部视图中使用扩展方法

时间:2012-07-17 14:23:18

标签: 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.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>

任何人都可以解释为什么会这样吗?

由于

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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