2016-07-28 9 views
0

ログインに成功した後、ホームページにリダイレクトしようとしています。現在、私はASP.NET MVC 5、AngularJS、EntityFramework 6、ブートストラップとリポジトリパターンを使用しています。AngingJSコントローラからのAsp.Net MVC 5の呼び出し

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

私は学生/インデックスにリダイレクトする以下の私のLoginControllerためのコードです。ログインに成功した後の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'; 
} 

リダイレクト(StudentIndexに全く新しいHTTP GETリクエストをしているので、スコープのプロパティ値を設定するにはポイントがありません。

+0

お返事をお寄せいただきありがとうございますが、それは動作します。私がしたいもう一つ"$ scope.Message ="を渡す必要があります。 "+ d.data.FULLNAME;'この変数を/Student/Index.cshtmlビューに入れてください。どうすればいいですか? –

+0

PRGパターン。したがって、student/indexのユーザー情報を照会して、実行したいメッセージを表示します – Shyju

関連する問題