1

我有两个控制器。

一个是

 public partial class CatalogController : BaseNopController
    {

 [NonAction]
        protected IEnumerable<ProductOverviewModel> PrepareProductOverviewModels(IEnumerable<Product> products, 
            bool preparePriceModel = true, bool preparePictureModel = true,
            int? productThumbPictureSize = null, bool prepareSpecificationAttributes = false,
            bool forceRedirectionAfterAddingToCart = false)
        {
 var models = new List<ProductOverviewModel>();
            foreach (var product in products)
            {
                var model = new ProductOverviewModel()
                {
                    Id = product.Id,
                    Name = product.GetLocalized(x => x.Name),
                    ShortDescription = product.GetLocalized(x => x.ShortDescription),
                    FullDescription = product.GetLocalized(x => x.FullDescription),
                    SeName = product.GetSeName(),
                };

}
}

另一个是

public class HireController : BaseNopController
    {

        [HttpPost]
        public ActionResult CheckData(string submitButton)
        {
            switch (submitButton)
            {
                case "Yes":

                   // I want to call  CatalogController  --> PrepareProductOverviewModels
                case "No":
                    return RedirectToRoute("detailform");
                default:
                    return RedirectToRoute("detailform");
            }

        }
}

在 Hire 控制器 --> CheckData 函数中,我想调用 CatalogController -->PrepareProductOverviewModels(...) 我该怎么做?

4

2 回答 2

3

它是protected,所以除非你HireController派生自CatalogController,否则你不能调用它。但是,如果您将它放在另一个类中,例如 ViewModel 类,并制作它public,您可以从您的HireController.

该 ViewModel 存在protected或存在于您的控制器类中几乎没有意义。

于 2012-10-12T01:32:11.560 回答
0

如果您有需要在控制器之间共享的方法,那么您应该将它们分离到“帮助器”类中,并让两个控制器都调用该类。

于 2012-10-12T04:15:03.897 回答