Сделать внутренний класс в контроллере вызываемым из HTTP

У меня есть вопрос о контроллере С#. Как вызвать внутренний класс в контроллере С#? Например, я хочу вызвать AdminController.Inner.Call() из JavaScript.

    public class AdminController {

        public class Inner {

            public JsonResult Call() { }

        }

    }

Спасибо за ответы!

Все, что я читал, я знаю. Это просто пример, мне это нужно для большого проекта, около 3000 строк. Если у меня есть 5 функций для одной страницы, я хочу присоединить ее к одному классу отдельно от других. И поэтому другие функции делают то же самое.


person user1173536    schedule 18.07.2014    source источник
comment
Зачем вам это нужно?   -  person Mr. Mr.    schedule 18.07.2014


Ответы (2)


Раньше лично не использовал контроллеры, но после беглого прочтения кажется, что это довольно ограничительный тип. Если вся проблема заключается в вызове метода внутреннего класса, почему бы просто не написать метод в классе верхнего уровня, который вызывает метод внутреннего класса и возвращает результат?

ex.

 public class AdminController {

    public class Inner {

        public JsonResult Call() { }

    }

    public JsonResult InnerClassMethod { return this.Inner.Call(); }


}

Скотч некрасивый, но работает.

person boxed    schedule 18.07.2014
comment
Это не работает, у AdminController нет this.Inner и, кроме того, это то же самое, что и мой ответ. - person CodeCaster; 18.07.2014
comment
Да, я ошибочно отнесся к нему как к экземпляру. Ваш код точнее. - person boxed; 18.07.2014

Либо напишите собственный ControllerFactory, либо вызовите его с помощью ActionMethod из вашего AdminController :

public class AdminController 
{
    public JsonResult CallInner()
    {
        var inner = new Inner();
        return inner.Call();
    }        
}

Похоже, вы на самом деле пытаетесь сделать что-то еще, можете ли вы объяснить, что?

person CodeCaster    schedule 18.07.2014
comment
У меня большой проект, и мне нужно больше занятий под мастер-классом Admin. Я реорганизую код для лучшей практики. Поэтому я могу добавить больше функций по одной теме к одному классу и так далее. - person user1173536; 18.07.2014