我是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!
}
}
对不起我的英文,非常感谢您的回复!:)
答案 0 :(得分:2)
让控制器调用其他控制器的实例方法并不是最好的设计。我建议您将方法GetShopId
添加到IShopRepository
,以便使用存储库的每个组件都可以访问它(包括您的其他控制器)。毕竟,IShopRepository
是此方法所属的地方。
答案 1 :(得分:0)
我认为最简单的解决方案是从要使用其方法的控制器继承(假设该方法不是私有的)。