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.如何将其更改为实际重定向?
尝试这种方法而不是$location.path("/Home/SignUp"):
window.location.pathname = 'Home/SignUp';
Run Code Online (Sandbox Code Playgroud)
这是因为角度拦截$location的重定向并通过自己的路由基础设施处理它们,从而阻止了你的预期行为.
| 归档时间: |
|
| 查看次数: |
5870 次 |
| 最近记录: |