从另一个控制器调用非动作方法

时间:2015-02-01 11:16:50

标签: asp.net-mvc asp.net-mvc-4 ninject

我是MVC的新手,我无法找到解决问题的方法。我想从另一个控制器调用非动作方法(返回字符串,int等)。它甚至可能吗?怎么做得好?我正在使用ninject,我的控制器看起来像这样:

public class ShopController : Controller
{
  private IShopRepository repository;

  public ShopController(IShopRepository shopRepository)
  {
    this.repository = shopRepository;
  }

  public int GetShopId(string shopName)
  {
    // how to call this method from another controller?
    // here is linq query which needs shop table repository!
  }
}

对不起我的英文,非常感谢您的回复!:)

2 个答案:

答案 0 :(得分:2)

让控制器调用其他控制器的实例方法并不是最好的设计。我建议您将方法GetShopId添加到IShopRepository,以便使用存储库的每个组件都可以访问它(包括您的其他控制器)。毕竟,IShopRepository是此方法所属的地方。

答案 1 :(得分:0)

我认为最简单的解决方案是从要使用其方法的控制器继承(假设该方法不是私有的)。