상속: Nop.Web.Framework.Mvc.BaseNopEntityModel
        public ActionResult EditExtendedReviewPost(int OrderId, int ProductId, PublicReviewEditModel model)
        {

            var ProductReview = model.AddProductReviewModel;
            var VendorReview = model.VendorReviewListModel;
            var customer = _workContext.CurrentCustomer;
            var product = _productService.GetProductById(ProductId);
            if (product == null || product.Deleted || !product.Published || !product.AllowCustomerReviews)
                return RedirectToRoute("HomePage");
            if (ModelState.IsValid)
            {
                var canCustomerReviewVendor = _extendedVendorService.CanCustomerReviewVendor(product.VendorId, customer.Id, OrderId);
                if (!canCustomerReviewVendor)
                {
                    return InvokeHttp404();
                }

                var customerProductReviews = product.ProductReviews.Where(m => m.CustomerId == customer.Id).OrderByDescending(m => m.CreatedOnUtc);
                var rating = ProductReview.Rating;
                if (rating < 1 || rating > 5)
                    rating = _catalogSettings.DefaultProductRatingValue;
                var isApproved = !_catalogSettings.ProductReviewsMustBeApproved;
                ProductReview productReview;
                if (customerProductReviews.Any())
                {
                    productReview = customerProductReviews.First();
                    productReview.Title = ProductReview.Title;
                    productReview.ReviewText = ProductReview.ReviewText;
                    productReview.Rating = rating;
                    productReview.IsApproved = isApproved;
                    //updating
                }
                else
                {
                    productReview = new ProductReview() {
                        ProductId = product.Id,
                        CustomerId = _workContext.CurrentCustomer.Id,
                        Title = ProductReview.Title,
                        ReviewText = ProductReview.ReviewText,
                        Rating = rating,
                        HelpfulYesTotal = 0,
                        HelpfulNoTotal = 0,
                        IsApproved = isApproved,
                        CreatedOnUtc = DateTime.UtcNow,
                    };
                    product.ProductReviews.Add(productReview);
                }
                _productService.UpdateProduct(product);

                //update product totals
                _productService.UpdateProductReviewTotals(product);

                //notify store owner
                if (_catalogSettings.NotifyStoreOwnerAboutNewProductReviews)
                    _workflowMessageService.SendProductReviewNotificationMessage(productReview, _localizationSettings.DefaultAdminLanguageId);

                //activity log
                _customerActivityService.InsertActivity("PublicStore.AddProductReview", _localizationService.GetResource("ActivityLog.PublicStore.AddProductReview"), product.Name);


                rating = VendorReview.Rating;
                if (rating < 1 || rating > 5)
                    rating = _catalogSettings.DefaultProductRatingValue;


                var vendorReview = _extendedVendorService.GetVendorReview(product.VendorId, customer.Id, OrderId, ProductId);
                if (vendorReview == null)
                {
                    vendorReview = new VendorReview() {
                        IsApproved = isApproved,
                        CertifiedBuyerReview = true,
                        DisplayCertifiedBadge = true,
                        CreatedOnUTC = DateTime.Now,
                        CustomerId = customer.Id,
                        HelpfulnessNoTotal = 0,
                        HelpfulnessYesTotal = 0,
                        OrderId = OrderId,
                        ProductId = product.Id,
                        Rating = rating,
                        ReviewText = VendorReview.ReviewText,
                        Title = VendorReview.Title,
                        VendorId = product.VendorId
                    };
                }
                else
                {
                    vendorReview.IsApproved = isApproved;
                    vendorReview.ReviewText = VendorReview.ReviewText;
                    vendorReview.Title = VendorReview.Title;
                    vendorReview.Rating = rating;
                    vendorReview.HelpfulnessYesTotal = 0;
                    vendorReview.HelpfulnessNoTotal = 0;
                }
                _extendedVendorService.SaveVendorReview(vendorReview);
                return RedirectToRoute("ExtendedVendorReviewCenterLoader", new { Redirection = true });
            }
            else
            {
                return RedirectToRoute("HomePage");
            }
        }
        public ActionResult EditExtendedReview(int OrderId, int ProductId)
        {
            var product = _productService.GetProductById(ProductId);
            var customer = _workContext.CurrentCustomer;
            var customerProductReviews = product.ProductReviews.Where(m => m.CustomerId == customer.Id).OrderByDescending(m => m.CreatedOnUtc);
            var model = new PublicReviewEditModel();
            if (!customerProductReviews.Any())
            {
                model.AddProductReviewModel = new AddProductReviewModel();
            }
            else
            {
                var pr = customerProductReviews.First();
                model.AddProductReviewModel = new AddProductReviewModel() {

                    Title = pr.Title,
                    ReviewText = pr.ReviewText,
                    Rating = pr.Rating,

                };
            }

            var customerVendorReview = _extendedVendorService.GetVendorReview(product.VendorId, customer.Id, OrderId, product.Id);
            var vendor = _vendorService.GetVendorById(product.VendorId);

            if (customerVendorReview == null)
            {
                model.VendorReviewListModel = new VendorReviewListModel();
            }
            else
            {
                var order = _orderService.GetOrderById(OrderId);
                model.VendorReviewListModel = customerVendorReview.ToListModel(_pictureService, product, vendor, order);
            }

            model.VendorReviewListModel.CustomerName = customer.FormatUserName();

            var extendedVendor = _extendedVendorService.GetExtendedVendor(product.VendorId);

            model.VendorName = vendor.Name;
            model.ProductName = product.Name;
            model.ProductSeName = product.GetSeName();
            model.VendorSeName = vendor.GetSeName();

            if (product.ProductPictures.Count > 0)
                model.ProductImageUrl = _pictureService.GetPictureUrl(product.ProductPictures.First().Picture);

            if (extendedVendor != null && extendedVendor.LogoId > 0)
            {
                model.VendorImageUrl = _pictureService.GetPictureUrl(extendedVendor.LogoId);
            }

            model.VendorReviewListModel.ProductId = product.Id;
            model.VendorReviewListModel.OrderId = OrderId;
            return View("ExtendedVendor/EditExtendedReview", model);
        }