Asp.net mvc 以角度传递ASP.NETMVC控制器/操作
我一直在网上搜索,但似乎找不到关于这个的好答案 这是将控制器/操作URL传递给Angular的正确方法吗Asp.net mvc 以角度传递ASP.NETMVC控制器/操作,asp.net-mvc,angularjs,angularjs-ng-init,Asp.net Mvc,Angularjs,Angularjs Ng Init,我一直在网上搜索,但似乎找不到关于这个的好答案 这是将控制器/操作URL传递给Angular的正确方法吗 <div ng-controller="MainCtrl" ng-init="getScheduleUrl = '@(Url.Action("GetSchedule"))'"> 还是有更好的方法?如果我有很多URL要传递,这可能会很快变得非常混乱。嗨,有很多方法,但我喜欢这一种: 通常在我的主页/索引视图上 <script> angular.mod
<div ng-controller="MainCtrl"
ng-init="getScheduleUrl = '@(Url.Action("GetSchedule"))'">
还是有更好的方法?如果我有很多URL要传递,这可能会很快变得非常混乱。嗨,有很多方法,但我喜欢这一种: 通常在我的主页/索引视图上
<script>
angular.module('app').factory('dataStrap', function ()
{
var _data = @Html.Raw(ViewBag.Json);
var _getScheduleUrl = @(Url.Action("GetSchedule");
//or
var _someUrls =[
{urla: @(Url.Action("GetSchedule")}
{urlb: @(Url.Action("GetSchedule")}
];
return {
data : _data,
getScheduleUrl : _getScheduleUrl,
someUrls :_someUrls
}
angular.module('app').controller('myController', function($scope, dataStrap){
$scope.ScheduleUrl = dataStrap.getScheduleUrl;
})
</script>
角度。模块('app')。工厂('dataStrap',函数()
{
var_data=@Html.Raw(ViewBag.Json);
var_getScheduleUrl=@(Url.Action(“GetSchedule”);
//或
变量=[
{urla:@(Url.Action(“GetSchedule”)}
{urlb:@(Url.Action(“GetSchedule”)}
];
返回{
数据:_数据,
getScheduleUrl:_getScheduleUrl,
someURL:\u someURL
}
角度.module('app').controller('myController',function($scope,dataStrap){
$scope.ScheduleUrl=dataStrap.getScheduleUrl;
})
之后,您可以将dataStrap注入任何控制器,..voila!这在开始使用Angular时很诱人,但我不喜欢“双模板”方法。这有助于将Angular视为另一个客户端,就像Android或iOS应用程序一样与web API断开连接。这在客户端和服务器之间提供了一个清晰的分离。在Angular(以及大多数类型的客户端)中,有一个中介层从服务器API中提取核心UI代码。Angular调用此层
各部分如何组合(我将使用
$resource
而不是所有那些$http
调用).看看这个答案,看看它是否对您有效。我在几个项目中使用了该技术,将常量和设置从MVC传递到Angular…谢谢!这看起来是正确的轨道。但我如何将其注入控制器?@Scottie如果一切正常,我将非常感谢将问题标记为已解决。您的意思是这样而不是这样使用$http对服务器进行REST调用,我是否应该使用$resource来代替?$http/$resource是一个风格问题,我的主要想法是将Angular应用程序与API分离,不要使用服务器端和客户端模板。一个或另一个:)如果有帮助的话,我可以在我的答案中添加一个示例服务和控制器。我不确定模板是从哪里来的?使用ASP.Net,根据我运行的服务器,我的url可能是或。使用@url.Action,我可以获得url。如果我尝试在Angular controller中使用/schedule/get,它将在m上失败y dev PC,因为我需要/MyWebApp/schedule/get。这只是一种简单的方法,可以在我需要执行$http请求时将准确的URL传递到Angular中。@URL.Action是服务器端模板。所有Angular视图都使用客户端模板。理想情况下,您的web服务器提供静态内容和web API。有一种方法可以构建您的Angular应用程序oes不会将其与ASP.NET(或任何后端)耦合。您可能不关心这一点。在我的一个应用程序中,我需要能够像您一样交换端点。我使用grunt ng常量:+1表示grunt!我将研究此解决方案!