如何使用AngularJS重定向ASP MVC中的页面?

Lat*_*nis 2 c# asp.net asp.net-mvc asp.net-mvc-4 angularjs

我经历了启动新的ASP.NET MVC无用户身份验证过程的过程,并且已经开始将AngularJS与C#代码集成.

我的_ViewStart.cshtml应用_Layout.cshtml@RenderBody()每一个我的观点的视图-下>首页找到.我有两个观点,Index.cshtml并且SignUp.cshtml.

在索引部分视图中,我有一个表单,其中包含由此AngularJS函数控制的操作:

.controller('LoginController', function ($scope, $location, LoginService) {
    $scope.LoginData = {
        CID: '',
        Email: ''
    };

    $scope.Login = function ($window) {
        $scope.Submitted = true;
        if ($scope.IsFormValid) {
            LoginService.GetUser($scope.LoginData).then(function (d) {
                if (d.data.CID != null) {
                    loginCID = d.data.CID;
                    loginEmail = d.data.Email;
                    $scope.Message = "Successfully logged in. Welcome " + d.data.CID;
                    $location.path("/Home/SignUp");
                }
                else {
                    alert("Invalid Creds");
                }
            });
        }
    };
})
Run Code Online (Sandbox Code Playgroud)

我已经省略了包含任何对这个问题不完全必要的额外代码,因此排除了额外的变量/工厂/服务.除了这一行,代码都有效:

$location.path("/Home/SignUp");
Run Code Online (Sandbox Code Playgroud)

填写表单后,$scope.Message对if语句中的内容进行更改,并将URL更改为http://localhost:61660/,http://localhost:61660/Home/SignUp但仍会显示Index的部分视图.意思是,我仍然看到Index.cshtml被渲染在身体而不是SignUp.cshtml.如何将其更改为实际重定向?

Sla*_*nov 6

尝试这种方法而不是$location.path("/Home/SignUp"):

window.location.pathname = 'Home/SignUp';
Run Code Online (Sandbox Code Playgroud)

这是因为角度拦截$location的重定向并通过自己的路由基础设施处理它们,从而阻止了你的预期行为.