1

私は2つのコントローラーを持っています。

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ない限り、それを呼び出すことはできません。ただし、ViewModelクラスなどの別のクラスに配置して作成した場合は、から呼び出すことができます。HireControllerCatalogControllerpublicHireController

そのViewModelがコントローラークラスにあること、またはコントローラークラスにあることはほとんど意味がありませんprotected

于 2012-10-12T01:32:11.560 に答える
0

コントローラ間で共有する必要のあるメソッドがある場合は、それらを「ヘルパー」クラスに分離し、両方のコントローラにそのクラスを呼び出させる必要があります。

于 2012-10-12T04:15:03.897 に答える