2012-01-02 1 views
1

AutofacまたはNinjectの依存関係注入を適用しようとしていますが、クライアント側の検証が機能しなくなってしまいます。ここで 依存関係注入によりクライアント側の検証が妨げられています

は私のインターフェイスです:

 public interface IPersonRepository 
{ 
    IQueryable<Person> Persons { get; } 
} 

そして、こちらのモデルです:

 class EFPersonRepository : IPersonRepository 
{ 
    private readonly Context _context; 

    public EFPersonRepository(Context context) 
    { 
     _context = context; 
    } 

    public IQueryable<Person> Persons 
    { 
     get { return _context.Persons; } 
    } 
} 

そして、ここでコントローラです:

public class PersonController : Controller 
{ 
    private readonly IPersonRepository _personRepository; 



    public PersonController(IPersonRepository personRepository) 
    { 
     _personRepository = personRepository; 
    } 

    public ActionResult Create() 
    { 
     var person=new Person(); 
     return View(person); 
    } 
    } 

アプリケーションが起動します。

protected void Application_Start() 
    { 
     // ApplyDependeny(); 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
    } 

    private void ApplyDependeny() 
    { 
     var context = new Context(); 
     var builder = new ContainerBuilder(); 
     builder.RegisterControllers(Assembly.GetExecutingAssembly()); 
     builder.RegisterModule(new DependencyInjector(context)); 
     DependencyResolver.SetResolver(new AutofacDependencyResolver(builder.Build())); 
    } 

クライアント側の参照:

 <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 

web.configファイル:

 <add key="ClientValidationEnabled" value="true"/> 
<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 

しかし、検証が機能していません。

+0

なぜクライアント側の検証を妨げるのはIOCコンテナなのでしょうか? – jgauffin

+0

@jgauffin:それは、推測と思われ、おそらく間違っているようです。 –

+0

それから推測を削除すれば、おそらくより良い助けになるでしょう。また、javascriptのエラーや生成されたビューの外観を追加します。依存性注入コンテナ検証機能を削除した後に – jgauffin

答えて

0

は、このクライアント側の参照

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 
+0

私はApplyDependeny()メソッドをコメントし、依存関係なしで作業しましたバリデーションはうまく動作します – DevMR

+0

'var context = new FormContext()' –

+0

これはどこで使うのですか?私は 'applydepedency'メソッドの依存性注入 – DevMR

0

を追加あなたのコンテキストおよびすべてのコントローラを登録しているが、あなたはあなたのリポジトリを登録するのを忘れました。

builder.RegisterType<EFPersonRepository>().As<IPersonRepository>(); 
+0

私は何もしませんでしたが、何かが欠けている必要があります。 – DevMR

+0

builder.RegisterModule(new DependencyInjector(context)); builder.RegisterType (); –

関連する問題