从Angular服务重定向到MVC控制器

时间:2015-05-28 22:21:54

标签: asp.net-mvc angularjs angularjs-routing

我有一个MVC应用程序,我使用MVC控制器来处理登录和注销。当我尝试注销时,我在我的MVC帐户控制器上调用LogOff操作,该控制器重定向到此控制器上的Login操作。调用此代码没有问题,登录操作似乎成功运行。但是,此操作的最后一行是

return View();

我可以看到我的屏幕闪烁,好像它正在绘制一个新页面。但是,我仍然可以在浏览器中看到http://localhost:60847/#/home而不是http://localhost:60847/Account/Login

我是否需要添加到路由以允许它处理MVC地址?目前,我的路由如下:

$routeProvider.when("/home", {
    //controller: "homeController",
    templateUrl: "app/layout/home.html"
});

$routeProvider.otherwise({ redirectTo: "/home" });

提前致谢!

1 个答案:

答案 0 :(得分:1)

我在几个地方查了一下并得出结论,解决此问题的一个选项是仅从超链接调用此操作并包含target =" _self"。我仍然可以在超链接上添加ng-click属性,并在我的角度控制器中调用代码。这不是我想要做的,因为我想从我的角度控制器而不是超链接进行调用,但它会起作用。

我使用的代码如下:

using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" }))
{
    @Html.AntiForgeryToken()
    <ul data-ng-controller="accountController as acctCtrl">
        <li><a data-ng-click="acctCtrl.logout()" href="javascript:document.getElementById('logoutForm').submit()" target="_self">Log off</a></li>
    </ul>
}