我正在编写自定义验证属性来验证zip \ postal代码。为了它的工作,我绝对需要知道所选的国家。但事实证明这很难做到。
在大多数视图模型中,nop使用其id传递国家/地区,这意味着我需要对其进行解密。这样做的方法是使用CountryService
,因为它可以将id转换为国家/地区名称,但问题是我如何实际执行此操作。
如果我要创建一个新的CountryService
对象,我还必须创建并传递许多依赖项(CacheService对象等),这听起来像是实现结果的错误方法。那么我如何在控制器外部实际使用Nop服务(在我的情况下在自定义验证属性中)?
答案 0 :(得分:3)
您不需要创建对象,而是从服务定位器获取实例。
这样的事情:
var countryService= EngineContext.Current.Resolve<ICountryService>();
您可以检查nopCommerce中的任何属性,例如WwwRequirementAttribute
,并检查它如何使用定位器模式。