我有两个控制器。
一个是
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");
}
}
}
内部租用控制器 - &gt; CheckData函数,我想调用CatalogController - &gt; PrepareProductOverviewModels(...) 我该怎么办?
答案 0 :(得分:3)
这是protected
,因此,除非HireController
来自CatalogController
,否则您无法调用它。但是,如果您将其放在另一个类(例如ViewModel类)中并将其设为public
,则可以从HireController
调用它。
对于ViewModel来说,protected
或者它在控制器类中是没有意义的。
答案 1 :(得分:0)
如果您需要在控制器之间共享方法,则应将这些方法分离为“帮助程序”类,并让两个控制器都调用该类。