2013-04-23 1 views
2

Я пытаюсь реализовать ApiController в моем StudentController, но дело в том, что я должен также реализовать BaseController.Как реализовать два контроллера в MVC

Когда я делаю это, он не работает

public class StudentController : BaseController, ApiController 

Как я могу это сделать?

+0

Если вы собираетесь использовать другой подход, пожалуйста, поделитесь им как ответом, чтобы он был полезен для будущих посетителей. :) – PSL

+1

я опустил его, не смешивая поставщика услуг с потребителем сейчас – okay

+0

Я не могу отметить его ответ, так как это не тот ответ, который я искал, я уже дал вам право голоса. – okay

ответ

5

Сделайте BaseController по производному от ApiController.

public class BaseController: ApiController 
{ 
... 

public class StudentController : BaseController 
{ 
... 

Если вы хотите использовать WebApi и MVC в одном приложении, вероятно, вы можете пойти с разными пространствами имен.

namespace Applicationrootns.Controllers 
{ 
    public class StudentController : Controller 
    { 
     .... 
    } 
} 

namespace Applicationrootns.Controllers.Api 
{ 
    public class StudentController : ApiController 
    { 
     .... 
    } 
} 

Теперь с этим вы можете получить доступ к

applicaitonbase/student/ и applicaitonbase/api/student

+0

Я не могу этого сделать, потому что я использую некоторые методы и свойства в BaseController, которые доступны только в классе Controller. – okay

+0

Вы используете WebApi с некоторыми функциями MVC? если да, взгляните на это http://weblogs.asp.net/fredriknormen/archive/2012/06/28/using-razor-together-with-asp-net-web-api.aspx – PSL

+0

Да, я использую оба из них – okay

1

Сделать вас базовый контроллер наследует от ApiController первого, а затем наследовать базовый контроллер от контроллера студента.

public class BaseController : ApiController 

public class StudentController : BaseController 
+0

Я не могу этого сделать, потому что я использую некоторые методы и свойства в BaseController, которые доступны только в классе Controller. – okay

+0

Каковы конкретные элементы, которые вам нужны из класса контроллера, который вы хотели бы использовать в классе ApiController? –

1

Вы не можете. Множественное наследование не разрешено в C#. другие ответы дают вам возможные обходные пути, но вы не можете получить из нескольких базовых классов. C# допускает только одну цепочку наследования.