从angularjs发布请求后,是否可以重定向到另一个View SecondView()
。我知道有角像$location.path
这样的东西。但我想检查控制器中的某些条件。
的JavaScript
var MyApp = angular.module("MyApp", []);
MyApp.controller("AppController", function ($scope,$http) {
$scope.onClick = function () {
$http({
method: 'POST',
url: 'Home/CheckData/',
data: {name: 'Jhon'},
});
};
});
控制器:
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult CheckData(string name)
{
if (name=="Jhon")
{
return RedirectToAction("SecondView");}
else{
return View();
}
}
public ActionResult SecondView()
{
return View();
}
}
Index.cshtml
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/MyScript.js"></script>
<div ng-app="MyApp" ng-controller="AppController">
<input ng-click="onClick()" type="button" value="Redirect" />
</div>
最佳答案
使用响应回调检查您的条件并执行所需的操作:
$scope.onClick = function() {
$http.post('Home/CheckData/', { name: 'Jhon'}).then(function(resp) {
if (resp.data.someVar) {
// javascript redirect using `$location`
} else {
// set some scope variable to display error
}
});
};
您将需要从服务器返回适当的JSON来进行条件检查
问题有点含糊,无法提供更多细节