0

StackExchangeの親愛なる仲間。

カスタムモデルバインダーがModelBinderProviders.BinderProvidersコレクションに追加されているかどうかをテストしようとしています。global.asaxを混乱させないように、WebActivatorを介してこれをアクティブ化することにしました。すべて正常に動作しますが、テスト:

WebActivator.ActivationManager.Run()メソッドを使用しようとしましたが、ロードされませんでした。私のテストでは次のようなものがあります。

[TestMethod] 
public void TemplateModelBinderProvider_Should_Be_Registered_In_BinderProviders()
{
    WebActivator.ActivationManager.Run();
    IModelBinderProvider templateModelBinderProvider = ModelBinderProviders.BinderProviders.
        Where(x => x is TemplateModelBinderProvider).
        FirstOrDefault();

    Assert.IsNotNull(templateModelBinderProvider);
}

そしてこれは私のapp_Startクラスです:

[assembly: WebActivator.PreApplicationStartMethod(typeof(MVC.App_Start.MVCBindings), "Start")]
namespace MVC.App_Start
{
    public static class MVCBindings
    {       
        public static void Start()
        {
            ModelBinderProviders.BinderProviders.Add(new TemplateModelBinderProvider());
        }
    }
}
4

1 に答える 1

0

申し訳ありませんが、私が書いたコードに問題があります。

現在、ソースコードにアクセスできませんが、夕方(英国時間)に確認します。

あなたは私にあなたの解決策を送って、私がそれをローカルに複製できると思いますか?私のメールアドレスはgmail.comのjkoneckiです。

アップデート

ソースコードを受け取りましたが、残念ながら、入手できないライブラリへの参照が含まれているため、コンパイルできません。

MVC3 Webアプリと、カスタムモデルバインダーが提供する単体テストプロジェクトを使用して、別のソリューションを作成しました(メールで送信します)。WebActivatorManager.Runメソッドがカスタムプロバイダーを正しく登録することを証明する2つのテストがあります。

単体テストをデバッグして、Runメソッドが静的メソッドを呼び出すことを確認してくださいStart

WebActivatorのソースコードはここにあります-あなたはそれを手に入れてステップスルーしたいかもしれません。

于 2011-07-29T08:28:57.830 に答える