public async Task BindModelAsync(ModelBindingContext bindingContext) { if (!int.TryParse(bindingContext.ValueProvider.GetValue("id").FirstValue, out int productId)) { throw new Exception("The product id was not provided"); } var editModel = new OpenProductConfigurationEditModel { Features = productRepository.GetProductFeatures(productId) }; for (int i = 0; i < editModel.Features.Count; i++) { BaseFeature feature = editModel.Features[i]; ModelMetadata modelMetadata = modelMetadataProvider.GetMetadataForType(feature.GetType()); IModelBinder modelBinder = modelBinderFactory.CreateBinder(new ModelBinderFactoryContext { Metadata = modelMetadata, CacheToken = modelMetadata }); string modelName = $"{bindingContext.BinderModelName}.Features[{i}]".TrimStart('.'); using (var scope = bindingContext.EnterNestedScope(modelMetadata, modelName, modelName, feature)) { await modelBinder.BindModelAsync(bindingContext); } } bindingContext.Result = ModelBindingResult.Success(editModel); }
public JsonResult GetGramsBySupportId([FromServices] IProductService productService, string supportId, int sectionId) { OpenProductConfigurationEditModel product = productService.GetProductForEditing(1); var feat = (SupportFeature)product.Features.Where(w => w.FeatureId == "SUPPORT" && w.SectionId == sectionId).First(); return(Json(feat.Options.Where(g => g.SupportId == supportId).Select(g => g.Grams).ToArray())); }
public JsonResult GetSelectSize([FromServices] IProductService productService, int id, int value) { OpenProductConfigurationEditModel product = productService.GetProductForEditing(id); var feat = (OpenFinalSizeFeature)product.Features.Where(w => w.FeatureId == "FINAL_FTO").First(); var selectedValue = feat.Options.Where(w => w.ID == value).First(); return(Json(selectedValue)); }
//public IActionResult Index() //{ // return View(); //} public IActionResult Edit([FromServices] IProductService productService, int id) { OpenProductConfigurationEditModel product = productService.GetProductForEditing(id); return(View(product)); }