public void UpdateDetailPageUrl(string oldUrl, string newUrl) { var widgets = _widgetBasePartService.GetAllWidgets <ProductGalleryWidgetService, ProductGalleryWidget>(); List <ProductGalleryWidget> needUpdateWidgets = new List <ProductGalleryWidget>(); foreach (var item in widgets) { if (item.DetailPageUrl.IsNullOrEmpty()) { continue; } if (item.DetailPageUrl.Equals(oldUrl, StringComparison.OrdinalIgnoreCase) || item.DetailPageUrl.StartsWith(oldUrl + "/", StringComparison.OrdinalIgnoreCase)) { item.DetailPageUrl = newUrl + item.DetailPageUrl.Substring(oldUrl.Length); needUpdateWidgets.Add(item); } } if (needUpdateWidgets.Any()) { _widgetBasePartService.UpdateWidgets(needUpdateWidgets.ToArray()); } }