Właśnie zacząłem używać VS 2012 RC i tworzę aplikację internetową ASP.NET MVC 4, w której planuję dostarczyć zarówno interfejs użytkownika oparty na HTML, jak i interfejs programowania oparty na WebApi.Czy mogę mieć zarówno kontroler, jak i kontroler ApiController dla tego samego?
Dla mojej witryny HTML, mam kontroler i widok dla każdego z moich modeli (MVC!), A routing działa "zgodnie z konwencją", dzięki czemu na przykład adres URL /client
jest zgodny z moim ClientController
. Moje ClientController
pochodzi z Controller
.
Dla mojego API utworzę nowe kontrolery, które pochodzą z ApiController
. Naturalnie chcę, aby moje adresy URL API były podobne do adresów URL HTML, więc chciałbym, aby informacje o kliencie były dostępne pod adresem /api/client
. Jednak dzięki konwencjonalnemu routingowi sugerowałbym, że potrzebuję ApiController o nazwie ClientController
. I mam już klasę ClientController
.
Jak sobie z tym poradzić? Czy potrzebuję niestandardowego routingu? Czy umieszczam klasy API w różnych przestrzeniach nazw, aby móc nadać im taką samą nazwę?
Aktualizacja: kwestia ta wydaje się sugerować, że inny nazw dla moich kontrolerów API jest wszystko czego potrzebuję: Mix web api controllers and site controllers
Czy obejrzałeś [obszary MVC] (http://msdn.microsoft.com/en-us/library/ee671793.aspx)? – gordonmleigh
@gordonml: Dzięki - po prostu to zrobiłem i wydaje mi się, że to sotra, przydaje się. Jednak nie mogę oprzeć się wrażeniu, że jest trochę przesadzone z tego, co muszę osiągnąć. –
Czy program IsAjaxRequest działa zgodnie z Twoimi potrzebami? http://stackoverflow.com/questions/1681563/detecting-isajaxrequest-with-asp-net-mvc-and-jquery-form-plugin-file-upload – kenny