6

我正在尝试在部分视图中使用字符串扩展方法。我收到以下错误:

“字符串”不包含“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());
        }
    }
}

根据这个先前的问题,我需要将命名空间添加到 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>

谁能解释这是为什么?

谢谢

4

2 回答 2

1

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

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

于 2012-07-17T14:37:46.727 回答
0

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

于 2012-07-17T14:57:32.893 回答