在控制器外使用Nop服务?

时间:2015-05-15 11:29:15

标签: c# asp.net-mvc nopcommerce

我正在编写自定义验证属性来验证zip \ postal代码。为了它的工作,我绝对需要知道所选的国家。但事实证明这很难做到。

在大多数视图模型中,nop使用其id传递国家/地区,这意味着我需要对其进行解密。这样做的方法是使用CountryService,因为它可以将id转换为国家/地区名称,但问题是我如何实际执行此操作。

如果我要创建一个新的CountryService对象,我还必须创建并传递许多依赖项(CacheService对象等),这听起来像是实现结果的错误方法。那么我如何在控制器外部实际使用Nop服务(在我的情况下在自定义验证属性中)?

1 个答案:

答案 0 :(得分:3)

您不需要创建对象,而是从服务定位器获取实例。

这样的事情:

var countryService= EngineContext.Current.Resolve<ICountryService>();

您可以检查nopCommerce中的任何属性,例如WwwRequirementAttribute,并检查它如何使用定位器模式。