【发布时间】:2015-08-24 19:53:06
【问题描述】:
我想使用 MVC 和 Angular JS (1.x) 在 .NET 中编写一组单页应用程序。我想在单个项目中使用 MVC 管理每个 SPA 的引导程序,以便使用 _Layout 和 Return view(); 的外观和感觉保持一致;但我希望 ng $scope 中的数据绑定通过 api 调用获取和发布。当 MVC 控制器和 API 控制器在逻辑上可以具有相同的名称时,如何将它们混合在同一个项目中。例如。引导产品 SPA 的 MVC 控制器将是 ProductController : Controller 并且数据调用将在 API 控制器中 ProductController : apiController
到这些的路由会有所不同:baseURL/products/... 用于 MVC 和 baseURL/api/products/... 用于 API 调用。路由器如何知道要调用哪个控制器,因为从技术上讲,它们不必位于 Controllers 文件夹中。使用 api 为 API 控制器添加前缀似乎有点杂乱,并创建了丑陋的 URL——当然它们应该只被 javascript 使用,但如果我想让它们在外部可用,我希望它们是干净的。
【问题讨论】:
-
使用不同的命名空间?
-
当您创建一个新的 Web 应用程序并选择 MVC,然后选择为 Web API 添加文件夹时,这不是为您设置的吗?
-
@Obversity。感谢您的速度响应;我仍然在掌握 .NET,而命名空间并不是我真正研究过的东西。命名空间如何与路由相关,以及它将如何确定应该使用哪个控制器。您如何建议设置命名空间 mvc.product.app 和 api.product.app 或者最后应该使用 mvc/api 位?从动物学的角度来看,它们应该在同一个命名空间中,因为它们都是同一个过程的一部分。
-
您可以通过 RouteConfig 和 WebAPIConfig 文件配置您的控制器。它将在一个项目中区分您的 MVC 控制器和 WebAPI 控制器
-
@尤里。我不这么认为,你仍然只有一个 Controllers 文件夹,当你创建一个 Controller 类文件时,你必须决定是使用 MVC 还是 API 脚手架,所以你仍然会得到两个同名的文件和两个同名的类除非你能找到区分它们的方法。
标签: asp.net-mvc angularjs asp.net-apicontroller