6

部分ビューで文字列拡張メソッドを使用しようとしています。次のエラーが表示されます。

'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());
        }
    }
}

この前の質問によると、名前空間を 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 要素にある場合、これは機能するはずです。それが失敗した場合は、web.config ステートメントを使用せずに、ビューの上部で明示的な @using ステートメントを使用してみてください。それは動作するはずです。

PS それは ReSharper インテリセンスですか、それとも VS ですか? ReSharper は、web.config エントリがスコープ内にない場合は @using が必要であることを明示的に伝えます。

于 2012-07-17T14:37:46.727 に答える
0

VS デバッガーで実行しているときにエラーが発生していますか?それとも、テストまたは運用システムから発生していますか? 拡張機能を含むモジュールが適切にインストールされていること (および適切に更新されていること) を確認してください。また、コマンド プロンプトから「iisreset」を実行してみてください。

于 2012-07-17T14:57:32.893 に答える