2016-07-28 2 views
0

Я пытаюсь перенаправить на домашнюю страницу после успешного входа в систему. В настоящее время я использую ASP.NET MVC 5, AngularJS, EntityFramework 6, шаблон начальной загрузки и репозитория. Ниже приведен код для моего LoginController:Вызов Asp.Net MVC 5 Просмотр с контроллера AngularJS

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; 
};}); 

Я хочу, чтобы перенаправить на Студенческой/Index. cshtml после успешного входа в систему. Как я могу достичь этого?

ответ

0

Вы пробовали:

return Json 
(
    new { 
      Data = user, 
      JsonRequestBehavior = JsonRequestBehavior.AllowGet, 
      redirectUrl = @Url.Action("UserLogin", "LoginController") 
     } 
); 

, а затем в угловой в $ http.post ждать успеха обратного вызова:

success: function(data) { 
    window.location.href = data.redirectUrl; 
} 
1

Вы не получить доступ к .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.

+0

Спасибо за Ваш ответ, это работает. Еще одна вещь, которую я хочу чтобы знать, мне нужно передать '$ scope.Message =" Успешно войти в систему. Добро пожаловать "+ d.data.FULLNAME;' эта переменная в /Student/Index.cshtml. Как это сделать? –

+0

Вы должны следовать PRG Поэтому запросите информацию о пользователе в студенте/индексе и отобразите любое сообщение, которое хотите сделать – Shyju

Смежные вопросы