使用AngularJS Routeprovider时无法请求ASP.NET mvc操作

时间:2017-06-12 17:46:34

标签: javascript angularjs asp.net-mvc asp.net-mvc-5

我遇到了角度路由提供商的问题。 在app.js route config中:

fmApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
 $locationProvider.html5Mode(true);
 $routeProvider.when('/', {
   templateUrl: 'staticViews/home.html,
   controller: 'fmController'
 }).otherwise({ redirectTo: '/' })
})

在我的web.config中,我重写了url以将所有请求重定向到index.html:

</system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite Url to layout.html">
          <match url=".*\.html|css/|img/|js/|data/|lib/|templates/|favicon.ico" negate="true" />
          <action type="Rewrite" url="layout.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

在index.html中我提交了一个表单,我希望它使用$ http >请求在服务器端执行

$scope.submit = function(){
    $http({
      method:'post',
      url: '/api/test',
      data: JSON.stringify(
        angular.copy($scope.data)
      )
    })
}

我的问题是当我请求/ api / test它没有调用服务器端(api-controller和test-action)它调用layout.html(因为我在web.config中重写)。如果我没有rewrite url in web.config并且使用$locationProvider.html5Mode(true);会在我的网址中显示#:http://localhost/#!/ ....

1 个答案:

答案 0 :(得分:0)

只是在黑暗中拍摄,但看起来你的API不包含在重写否定中。也许试试

<match url=".*\.html|api/|css/|img/|js/|data/|lib/|templates/|favicon.i‌​co" negate="true" />

可能?