我正在尝试使用AngularJS创build我的第一个应用程序。 但是,如果我需要为我的特定情况使用指令,我有点困惑。 我有一个简单的地图页面,我需要显示所选区域的纬度/经度值。 目前我没有使用指令。 我在控制器中做所有事情,并使用partials来显示结果。 我不打算在任何其他地方重复使用我的地图视图。 这就是为什么我不觉得我需要一个指令。 另一方面,我读了一个地方,每当你尝试在你的控制器(我正在使用谷歌地图API)中操作DOM时,你应该将该部分移到指令。 这是我的简单控制器: function MapViewController($scope) { $scope.zoom = 6; $scope.lat = 37; $scope.lon = -122; var mapOptions = { center: new google.maps.LatLng($scope.lat, $scope.lon), zoom: $scope.zoom, mapTypeId: google.maps.MapTypeId.HYBRID }; $scope.map = new google.maps.Map( document.getElementById('map-canvas'), mapOptions); /* * Update zoom and other map attributes. */ google.maps.event.addListener($scope.map, 'center_changed', function() { $scope.$apply(function () […]
我有Global.asax中的默认路由: RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); 我想能够定位一个特定的function,所以我创build了另一条路线: RouteTable.Routes.MapHttpRoute( name: "WithActionApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); 所以,在我的控制器中,我有: public string Get(int id) { return "object of id id"; } [HttpGet] public IEnumerable<string> ByCategoryId(int id) { return new string[] { "byCategory1", "byCategory2" }; } 调用…/api/records/bycategoryid/5会给我想要的。 […]
几天前,Derik Whitaker发表了一篇文章 ,提到了我一直很好奇的一点: 业务逻辑是否应该存在于控制器中? 到目前为止,我所见过的所有ASP.NET MVC演示都将控制器中的存储库访问权限和业务逻辑放在一起。 有些甚至在那里也进行validation。 这导致相当大,臃肿的控制器。 这真的是使用MVC框架的方式吗? 看来,这只是最终会有很多重复的代码和逻辑分布在不同的控制器。
对于我们的Web应用程序,我需要根据视图(或者更准确的说)来保存获取和显示的项目的顺序,即生成视图的控制器和操作(当然还有用户标识,但这不是重点)。 我不是在每个控制器动作中自己给一个标识符(为了将它用于某些依赖于视图的DB输出sorting),我认为从控制器自动创build这个标识符会更安全,叫从。 如何从控制器的action方法中获取控制器的名称和动作? 还是我需要反思? 我想这很容易,提前感谢!