4

DateTime と Int32 に一貫した書式設定を適用するために使用するいくつかの拡張メソッドを使用しようとしています。これはコード ビハインドではまったく問題なく動作しますが、データバインディングに問題があります。

私は得る:

'System.DateTime' does not contain a definition for 'ToCustomShortDate'

為に

<%# ((ProductionDetails)Container.DataItem).StartDate.ToCustomShortDate() %>

(ユーザーコントロールに含まれるグリッドビューのテンプレートフィールド内)

ユーザーコントロールの上部に拡張メソッドが定義されている名前空間を含めている場合でも:

<%@ import namespace="MyAssembly.Formatting" %>

他の誰かがこれに遭遇しましたか?それを解決する方法はありますか?

編集:私の間違い、上記は次のようになります:

<%@ import namespace="MyNamespace.Formatting" %>

すなわち。私は名前空間を間違って参照していません(コードビハインドで逐語的に機能します)

4

3 に答える 3

2

問題を発見!思った通りに名前空間を含めていましたが、実際の問題は、アプリが .NET 3.5 アセンブリのみを含み、3.5 コンパイラを使用してコンパイルされておらず、web.config からいくつかのエントリが欠落していたことでした。空のプロジェクトで、そこに (成功して) 試してみました!

エラーメッセージは時々誤解を招く可能性があります...

于 2008-11-28T15:08:13.310 に答える
1

上記で実装した拡張メソッドに関して、名前空間は次のようになりますか?

namespace MyNamespace.Formatting
于 2008-11-19T10:57:04.503 に答える
0

インポート名前空間からアセンブリ名を削除する必要があります...

あなたの拡張メソッドは Formatting という名前空間にあると思います。

namespace Formatting
{

    public static class DateTimeExtender
    {
        public static string ToCustomShortDate(this DateTime date)
        {
            return date.ToString("dd MMM yyyy");
        }
    }

    public class ProductionDetails
    {
        public DateTime StartDate { get; set; }    
    }
}

そしてASPXページでは...

<%@ Import Namespace="Formatting" %>
于 2008-11-19T10:27:45.107 に答える