通过ASP修改表单值..NET MVC动作过滤器

本文关键字:MVC 过滤器 NET ASP 修改 表单 通过 | 更新日期: 2023-09-27 18:19:16

我试图通过MVC动作过滤器修改添加到购物车的产品数量。这是我的,但它不工作:

public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var settings = _settingService.LoadSetting<RRGamesBaseSettings>();
        var customer = _workContext.CurrentCustomer;         
        if (customer.IsInCustomerRole(settings.ResellerRoleSystemName))
        {
            var productId = Convert.ToInt32(filterContext.ActionParameters["productId"]);
            var formCollection = new FormCollection(filterContext.Controller.ControllerContext.HttpContext.Request.Fo‌​rm);
            var productService = EngineContext.Current.Resolve<IRRGamesProductService>();
            var product = productService.GetProductById(productId);
            int quantity = 0;
            string fieldName = string.Format("addtocart_{0}.EnteredQuantity", productId);
            int.TryParse(formCollection[fieldName], out quantity);
            if (product != null)
            {
                if (quantity < product.CaseQuantity)
                {
                    quantity = product.CaseQuantity;
                    formCollection[fieldName] = quantity.ToString();
                }
            }                
        }
        base.OnActionExecuting(filterContext);
    }

当我将formCollection[formKey]设置为新的数量时,当它转到控制器动作时,它不会更新表单值

通过ASP修改表单值..NET MVC动作过滤器

我明白了,这很简单

formCollection.Set(fieldName, quantity.ToString());
filterContext.ActionParameters["form"] = formCollection;