2012-01-02 41 views
1

我正在嘗試使用依賴注入AutofacNinject,但最終我的客戶端驗證失效。依賴注入正在阻止客戶端驗證MVC3

這裏是我的接口:

 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 2012-01-02 07:48:16

+0

@jgauffin:這似乎是一個猜測,很可能是一個不正確的。 – 2012-01-02 07:52:14

+0

然後刪除猜測,你可能會得到更好的幫助。還要添加任何javascript錯誤以及生成的視圖的外觀。刪除依賴注入容器驗證的功能後, – jgauffin 2012-01-02 07:55:58

回答

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 2012-01-02 08:06:13

+0

嘗試'var context = new FormContext()' – 2012-01-02 08:10:06

+0

在哪裏使用這個?我是'applydepedency'方法中的依賴注入 – DevMR 2012-01-02 08:15:23

0

正在註冊您的背景和所有的控制器,但你忘了註冊信息庫。

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

我做了但沒有任何改變,必須丟失一些信息 – DevMR 2012-01-02 11:11:13

+0

更改builder.RegisterModule(new DependencyInjector(context)); to builder.RegisterType (); – 2012-01-02 11:36:59