Мое мнение таково, что вы не должны вызывать свой контроллер из любого места в коде. В ASP.NET MVC Controller существует для принятия запроса, получения данных и выбора правильного представления для возврата.
Возможно, вам следует добавить метод в репозиторий, который возвращает уже JSONized-данные, или ввести "Middle man", который может сериализовать данные, возвращаемые из репозитория, чтобы контроллер мог вызывать middle-man для выполнения работы. Тогда хранилище (или «Средний человек») может быть вызвано из любого места кода.
например (используется Json.NET для сериализации JSON):
public class MiddleMan
{
IRepository repository
public MiddleMan(IRepository repository)
{
this.repository = repository;
}
public string GetJsonObjects(int id)
{
return JsonConvert.SerializeObject(repository.GetObject(id));
}
}
тогда контроллер (или где-нибудь в коде) может вызвать этот средний класс:
public string Dataset(int id)
{
return new MiddleMan(repository).GetJsonObjects(id);
}