2016-07-28 11 views
0

Ich versuche nach erfolgreicher Anmeldung auf die Startseite umzuleiten. Derzeit verwende ich ASP.NET MVC 5, AngularJS, EntityFramework 6, Bootstrap und Repository-Muster. Unten ist der Code für meine LoginController:Aufruf von Asp.Net MVC 5 Ansicht von AngularJS Controller

public JsonResult UserLogin(STUDENTMANAGEMENTUSER data) 
    { 
     var user = repository.UserLogin(data); 
     return new JsonResult { Data = user, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
    } 

Code für AngularJS Controller:

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

und Code für mein AngularJS Service:

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

ich Student/Index umleiten möchten. cshtml nach erfolgreicher Anmeldung. Wie kann ich das erreichen?

Antwort

0

Haben Sie versucht:

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

Und dann in Winkel in $ http.post für einen Erfolg Rückruf warten:

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

Sie greifen nicht ein .cshtml Blick direkt. Sie greifen über eine Aktionsmethode darauf zu. So erstellen Sie eine Aktionsmethode diese Ansicht zurückzukehren (wenn nicht bereits vorhanden)

public ActionResult StudentIndex() 
{ 
    // you may pass a view model to the view as needed 
    return View("~/Views/Student/Index.cshtml"); 
} 

Jetzt in Ihrem Login Erfolg, einfach umleiten zu dieser Aktion-Methode.

if (d.data.USERNAME != null) { 
     $scope.IsLoggedIn = true; 
     $scope.Message = "Successfully login done. Welcome " + d.data.FULLNAME; 
     window.location.href='/YourControllerName/StudentIndex'; 
} 

Da Sie eine Umleitung (eine völlig neue HTTP-GET-Anfrage an die StudentIndex tun, gibt es keinen Punkt in den Anwendungsbereich Eigenschaftswerte festlegen.

+0

Vielen Dank für Ihre Antwort, es funktioniert. Eine andere Sache, ich will um zu wissen, muss ich '$ scope.Message =" Erfolgreich einloggen fertig. Willkommen "+ d.data.FULLNAME;' diese Variable an /Student/Index.cshtml anzeigen. Wie kann ich das tun? –

+0

Sie sollten PRG folgen So fragen Sie Ihre Benutzerinformationen im Schüler/Index ab und zeigen Sie an, welche Nachricht Sie ausführen möchten – Shyju