Asp.net-Mvc-3
如何阻止 Ninject 覆蓋自定義 DataAnnotationsModelValidatorProvider?
我有一個自定義 DataAnnotationsModelValidatorProvider 用於以更動態的方式進行模型驗證,然後只添加屬性。我嘗試將我的提供添加到 global.asax.cs,如下所示:
ModelValidatorProviders.Providers.Clear(); ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());但是,一旦我載入我的表單,我就會收到一條錯誤消息,提示“不顯眼的客戶端驗證規則中的驗證類型名稱必須是唯一的。不止一次看到以下驗證類型:必需”。
根據此部落格的評論,這是因為 Ninject 覆蓋了自定義驗證器提供程序。
我對 MVC 還很陌生,我似乎無法找到一種方法來告訴 Ninject 也接受我的自定義提供程序,我將如何解決這個問題?
作為記錄:我不想使用 Fluentvalidation.net,我想堅持使用預設的 MVC 驗證(大部分情況下)。
將提供者的註冊更改為
Rebind<ModelValidatorProvider>().To<AttributeValidatorProvider>();
還有另一種方法(肯定適用於 MVC 4):
找到繼承
IdependencyResolver介面並添加到建構子的類_kernel.Unbind<ModelValidatorProvider>();- 您只需取消綁定 ninject 驗證器,預設驗證器應該不會發生衝突。在我的情況下,我的建構子如下所示:
public NinjectDependencyResolver() { _kernel = new StandardKernel(); _kernel.Unbind<ModelValidatorProvider>(); AddBindings(); }