2012-10-12 50 views
1

我有兩個控制器。如何在MVC中調用另一個控制器函數?

一個是

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"); 
      } 

     } 
} 

內部服務控制器 - > CheckData功能,我想打電話給CatalogController - > PrepareProductOverviewModels(...) 我怎樣才能這樣做?

回答

3

這是protected,所以除非你的HireController派生自CatalogController,你不能稱它。但是,如果您將其放入其他課程(如ViewModel課程)中,並將其設置爲public,則可以從HireController中調用該課程。

對於那個ViewModel是protected或它在你的控制器類中是沒有意義的。

0

如果您有需要在控制器之間共享的方法,那麼您應該將這些方法分爲「幫助程序」類,並讓兩個控制器都調用該類。

相關問題