在控制器外使用 Nop 服务?
Use a Nop Service outside of a controller?
我正在编写用于验证 zip\postal 代码的自定义验证属性。为了让它起作用,我绝对需要知道所选的国家/地区。但是做起来却出奇的难
在大多数视图模型中,nop 使用其 id 传递国家/地区,这意味着我需要破译它。这样做的方法是使用 CountryService
因为它可以将 id 转换为国家/地区名称,但问题是我实际上该怎么做。
如果我要创建一个新的 CountryService
对象,我还必须创建并传递一些依赖项(CacheService 对象等),这听起来像是实现结果的错误方法。那么我如何在控制器外部实际使用 Nop 服务(在我的例子中是在自定义验证属性中)?
您不需要创建 对象,而是从服务定位器获取实例。
像这样:
var countryService= EngineContext.Current.Resolve<ICountryService>();
您可以检查 nopCommerce 中的任何属性,例如 WwwRequirementAttribute
并检查它如何使用定位器模式。
我正在编写用于验证 zip\postal 代码的自定义验证属性。为了让它起作用,我绝对需要知道所选的国家/地区。但是做起来却出奇的难
在大多数视图模型中,nop 使用其 id 传递国家/地区,这意味着我需要破译它。这样做的方法是使用 CountryService
因为它可以将 id 转换为国家/地区名称,但问题是我实际上该怎么做。
如果我要创建一个新的 CountryService
对象,我还必须创建并传递一些依赖项(CacheService 对象等),这听起来像是实现结果的错误方法。那么我如何在控制器外部实际使用 Nop 服务(在我的例子中是在自定义验证属性中)?
您不需要创建 对象,而是从服务定位器获取实例。
像这样:
var countryService= EngineContext.Current.Resolve<ICountryService>();
您可以检查 nopCommerce 中的任何属性,例如 WwwRequirementAttribute
并检查它如何使用定位器模式。