Я пытаюсь перенаправить на домашнюю страницу после успешного входа в систему. В настоящее время я использую ASP.NET MVC 5, AngularJS, EntityFramework 6, шаблон начальной загрузки и репозитория. Ниже приведен код моего LoginController:
public JsonResult UserLogin(STUDENTMANAGEMENTUSER data)
{
var user = repository.UserLogin(data);
return new JsonResult { Data = user, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
код для контроллера AngularJS:
app.controller("mvcLoginCtrl", function ($scope, loginAJService) {
$scope.IsLoggedIn = false;
$scope.Message = '';
$scope.Submitted = false;
$scope.IsFormValid = false;
$scope.LoginData = {
USERNAME: '',
USERPASSWORD: ''
};
//Check is Form Valid or Not // Here f1 is our form Name
$scope.$watch('f1.$valid', function (newVal) {
$scope.IsFormValid = newVal;
});
$scope.Login = function () {
$scope.Submitted = true;
if ($scope.IsFormValid) {
loginAJService.GetUser($scope.LoginData).then(function (d) {
if (d.data.USERNAME != null) {
$scope.IsLoggedIn = true;
$scope.Message = "Successfully login done. Welcome " + d.data.FULLNAME;
}
else {
alert('Invalid Credential!');
}
});
}
};});
и код для моего сервиса AngularJS:
app.service("loginAJService", function ($http) {
this.GetUser = function (d) {
var response = $http({
method: "post",
url: "Login/UserLogin",
data: JSON.stringify(d),
dataType: "json"
});
return response;
};});
Я хочу перенаправить на Student/Index.cshtml после успешного входа в систему. Как я могу достичь этого?
Ты пробовал:
return Json
(
new {
Data = user,
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
redirectUrl = @Url.Action("UserLogin", "LoginController")
}
);
А затем в угловом в $ http.post ждать успешного обратного вызова:
success: function(data) {
window.location.href = data.redirectUrl;
}
Вы не имеете прямого доступа к представлению.cshtml. Вы получаете доступ к нему с помощью метода действий. Поэтому создайте метод действия, чтобы вернуть это представление (если оно еще не существует)
public ActionResult StudentIndex()
{
// you may pass a view model to the view as needed
return View("~/Views/Student/Index.cshtml");
}
Теперь в вашем успехе входа в систему просто переадресуйте этот метод действий.
if (d.data.USERNAME != null) {
$scope.IsLoggedIn = true;
$scope.Message = "Successfully login done. Welcome " + d.data.FULLNAME;
window.location.href='/YourControllerName/StudentIndex';
}
Поскольку вы выполняете перенаправление (совершенно новый запрос Http GET для StudentIndex, нет смысла устанавливать значения свойств области.
$scope.Message = "Successfully login done. Welcome " + d.data.FULLNAME;
эта переменная для /Student/Index.cshtml view. Как я могу это сделать?