使用 AngularJS 调用异步控制器操作方法

Posted

技术标签:

【中文标题】使用 AngularJS 调用异步控制器操作方法【英文标题】:Async Controller Action Method invoke by using AngularJS 【发布时间】:2015-08-20 09:21:32 【问题描述】:

我是 AngularJS 的新手,我想知道如何通过 angularJS 在 MVC 中调用异步控制器动作方法。我已经尝试过下面的代码。有人可以帮助我吗?这是我的 AngularJS 代码

 $scope.updateEmp = function () 
        var response = $http(
            method: "post",
            url: "/Home/UpdateCustomer",
            data: JSON.stringify($scope.Customer),
            dataType: "json"
        ).success(function () 
            $scope.cancel();
            toaster.pop('success', "Success", 'Updates Successfully...!!');
           // showAlert("alert-success", "Updated!");

        ).error(function () 
            toaster.pop('error', "Error", 'Error while getting data', null, 'trustedhtml');
           // alert("Error while getting data");
        );
        // return response;
    

我的操作方法如下

  [HttpPost]
    public async void UpdateCustomer(Customer Upcustomer )
    
        await System.Threading.Tasks.Task.Run(() =>
            
                using (BusinessEntities dbContext = new BusinessEntities())
                

                    var customer = dbContext.Customers1.First(c => c.CustomerID == Upcustomer.CustomerID);

                    customer.Fname = Upcustomer.Fname;
                    customer.Lname = Upcustomer.Lname;
                    customer.Age = Upcustomer.Age;
                    customer.Adderss = Upcustomer.Adderss;
                    customer.ContactNo = Upcustomer.ContactNo;

                    dbContext.SaveChanges();
                    // return EmptyResult;
                    // return Json(customers, JsonRequestBehavior.AllowGet);
                    //return View(customers);
                
            );

    

【问题讨论】:

可以贴出你要调用的方法,目的是什么?更清楚。 如果您谈论的是 ASP.NET MVC 异步操作方法,那么它在服务器端是异步的这一事实与 HTTP 客户端如何调用它无关。 我编辑了我的问题,请看一下 你检查过MVC网站吗?更具体地说是他们的 WebAPI 部分? 有一个关于AngularJS + ASP.NET MVC的教程here 【参考方案1】:

我不知道你的控制器方法是在哪里声明的,但我建议它应该是这样的:

$scope.getAllCustomers = function()...

然后在回调函数中:

).success(function () 
    $scope.getAllCustomers();

如果这不是你的意思,请更清楚地说明问题^^

【讨论】:

感谢 Micromonger 的回复,现在我编辑了我的问题...请看一下。 抱歉,我不知道 c# dude :D 我发现您可能感兴趣的唯一内容是以下 =/ haacked.com/archive/2014/11/11/async-void-methods

以上是关于使用 AngularJS 调用异步控制器操作方法的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS如何实现异步

angularjs中的异步操作

Web API 中的异步等待控制流

AngularJS 资源承诺

angularjs学习笔记--组件$http$qmodule

AngularJs 中的两种方式数据绑定不使用异步回调