提交表单,将一些数据发布到MVC ASP.NET中的ActionResult方法,并重定向到相应的View

时间:2014-07-03 12:19:06

标签: asp.net-mvc angularjs

我正在研究AngularJS,我怀疑我们如何提交表格以及我们的期望。

我想要的是,当我提交表格时,我会被重定向到另一个视图。

因此,在Angular中使用$http,我将一些数据发布到我的MVC控制器中存在的方法Bills_Angular中,因此,如果此方法返回一个视图,我希望我能够被重定向到相应的View,在Firebug中,此请求存在并返回页面,但不会显示给我的页面。

角度控制器

var myModule= angular.module('myModule', ['ngRoute']);

myModule.controller("newBillsToPayController", function ($scope, $http, $location) {

    // Handle Button 'Finish' click
    $scope.btnFinish = function () {
        $http({
            method: "POST",
            url: "Bills_Angular",
            data: {
                Fornecedor: $scope.fornecedor
            },
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
        }).success(function (data) {  
              $location.path("/Bills_Angular");
        }).error(function () {
            alert("Error");
        });
    };
});

表格

<form method="post" name="formulary">
    <div class="panel-body ng-scope" ng-controller="newBillsToPayController">
        <newbillstopay></newbillstopay>
        <div class="col-md-11" style="margin-bottom: 20px;">
            <button ng-click="btnFinish()" class="btn btn-success" id="btnFinish" style="box-shadow: none; float: right;"><span class="glyphicon glyphicon-ok"></span> Finish</button>
        </div>
    </div>
</form>

ASP.NET MVC控制器

   public ActionResult Bills_Angular(Models.NewBills model)
   {            
      return View(model);
   }

这是我在Firebug中看到的(名称不同,因为我翻译了我的问题以便更容易理解)

enter image description here

更新

  • 'ngRoute'添加到我的模块,并将angular-route.js脚本与我的视图相关联。
  • 在控制器中,在success中,我放置了$ location并调用了我的视图。

1 个答案:

答案 0 :(得分:1)

因为您对服务器进行ajax调用,所以无法在服务器端重定向必须在客户端进行

使用$ location.path(&#34; / route&#34;);

var   myModule = angular.module('myModule', [ngRoute]);

     myModule.controller("newBillsToPayController", function ($scope, $http, $location) {

            // Handle Button 'Finish' click
            $scope.btnFinish = function () {
                $http({
                    method: "POST",
                    url: "Bills_Angular",
                    data: {
                        Fornecedor: $scope.fornecedor
                    },
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
                }).success(function (data) {  
               //to change the angular view use $location t0 redirect
                  $location.path("/route-where-you-want-to-go");
               //to redirect to page outside current angular app use 'window.location':
               //window.location = "/path-where-you-want-to-go

                }).error(function () {
                    alert("Error");
                });
            };
        });