2015-02-01 7 views
0

Я новичок в MVC, и я не могу найти решение для моей проблемы. Я хотел бы вызвать метод non-action (который возвращает строку, int и т. Д.) С другого контроллера. Возможно ли это? Как это сделать правильно? Я использую Ninject и мой контроллер выглядит следующим образом:Вызов метода non-action от другого контроллера

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! 
    } 
} 

Извините за мой английский и большое спасибо за ваши ответы :)

+1

просто объявите этот метод недействия как статический – VladL

ответ

2

Наличие контроллеров вызова методов экземпляра других контроллеров - не лучший дизайн. Я предлагаю вместо этого добавить метод GetShopId к IShopRepository, чтобы каждый компонент, использующий репозиторий, имел к нему доступ (включая другой контроллер). В конце концов, этот метод принадлежит IShopRepository.

0

Я думаю, что самое простое решение будет наследовать от контроллера метод вам которого хотите использовать (при условии, что метод не является приватным).

Смежные вопросы