【问题标题】:How to redirect pages in ASP MVC using AngularJS?如何使用 AngularJS 在 ASP MVC 中重定向页面?
【发布时间】:2016-11-21 02:21:58
【问题描述】:

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

我的_ViewStart.cshtml 使用_Layout.cshtml@RenderBody() 用于在“视图”->“主页”下找到的每个视图。我有两个观点,Index.cshtmlSignUp.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");
                }
            });
        }
    };
})

我已经省略了包含此问题并非完全必要的任何额外代码,因此已排除了额外的变量/工厂/服务。除了这一行之外,代码都可以工作:

$location.path("/Home/SignUp");

填写完表单后,$scope.Message 将更改为 if 语句中的内容,并且 URL 从 http://localhost:61660/ 更改为 http://localhost:61660/Home/SignUp 但仍显示 Index 的部分视图。意思是,我仍然看到Index.cshtml 呈现在正文中,而不是SignUp.cshtml。如何将其更改为实际重定向?

【问题讨论】:

    标签: c# asp.net angularjs asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    试试这个方法,而不是$location.path("/Home/SignUp")

    window.location.pathname = 'Home/SignUp';
    

    这是由于angular拦截$location的重定向并通过自己的路由基础设施处理它们,防止你的预期行为。

    【讨论】:

    • 我刚刚遇到了一个问题。如果我在SignUpController.js 中放置一个console.log('test'),则在导航时控制台上不会输出任何内容。
    • 尝试直接从浏览器访问此页面,并检查日志消息是否出现在控制台。
    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多