Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 以角度传递ASP.NETMVC控制器/操作_Asp.net Mvc_Angularjs_Angularjs Ng Init - Fatal编程技术网

Asp.net mvc 以角度传递ASP.NETMVC控制器/操作

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

我一直在网上搜索,但似乎找不到关于这个的好答案

这是将控制器/操作URL传递给Angular的正确方法吗

<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!我将研究此解决方案!