2016-09-08 8 views
0

私はサーバーにリクエストを送信しています。私が成功した応答を得た後、私は現在のページの中に部分的なページをロードしたい。Javascriptのコールバック応答後にMVCルーティングを使用するにはどうすればよいですか?

私はAngularJS RoutingとMVC Rountingがあることを知っています。 2つの異なる方法。

私はcshtmlファイルで@ Html.ActionLinkを使用して別の部分ページをロードできることを知っています。問題は、サーバーから正常な応答が得られた場合にのみ実行したいということです。

どうすればいいですか? WebApplication1と

<environment names="Development"> 
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> 
    <link rel="stylesheet" href="~/css/site.css" /> 
</environment> 
<environment names="Staging,Production"> 
    <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css" 
      asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css" 
      asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" /> 
    <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" /> 
</environment> 

@ @RenderBody()
- @ViewData [ "タイトル"] @

_Layout.cshtml

<!DOCTYPE html> 

<environment names="Development"> 
    <script src="~/lib/jquery/dist/jquery.js"></script> 
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script> 
    <script src="~/lib/angular/angular.js"></script> 
    <script src="~/lib/angular-route/angular-route.js"></script> 
    <script src="~/lib/angular-resource/angular-resource.js"></script> 
    <script src="~/js/site.js" asp-append-version="true"></script> 
</environment> 
<environment names="Staging,Production"> 
    <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js" 
      asp-fallback-src="~/lib/jquery/dist/jquery.min.js" 
      asp-fallback-test="window.jQuery"> 
    </script> 
    <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js" 
      asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js" 
      asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"> 
    </script> 
    <script src="~/lib/angular/angular.min.js" asp-append-version="true"></script> 
    <script src="~/js/site.min.js" asp-append-version="true"></script> 
</environment> 

@RenderSection("scripts", required: false) 

@RenderBodyにロード最初のページ()

<div ng-controller="LoginController"> 
<div class="row"> 
    <span>Login</span> 
</div> 
<div class="row"> 
    <label>User Name:</label> 
    <input type="text" ng-model="username" /> 
</div> 
<div class="row"> 
    <button type="button" ng-click="login(username)">Enter Chat</button> 
</div> 

そして、これはコントローラです:

(function() { 
'use strict'; 

angular 
    .module('app') 
    .controller('LoginController', LoginController); 

LoginController.$inject = ['$scope', '$http', '$compile', 'Login']; 

function LoginController($scope, $http, $compile, Login) { 
    /* jshint validthis:true */ 
    $scope.username = null; 

    $scope.login = function (_username) { 

     //Move To Service 
     var postUrl = '/api/Login'; 
     var postData = { username: _username }; 

     $http.post(postUrl, postData) 
      .success(function (data, status, headers, config) { 
          RedirectToChatContentPage(); 
      }) 
      .error(function (data, status, header, config) { 
       alert("Error"); 
      } 
     ); 

    }; 

    function RedirectToChatContentPage() { 
     //Move to service 
     $.ajax({ 
      type: 'GET', 
      url: 'Home/ChatContentView', 
      dataType: 'html' 
     }).done(function (response) { 
      $('div#container').html(response); 
     }); 
    } 
} 

})();

+0

はAjax.ActionLink' @ 'に見て。プロジェクトに 'jquery.unobtrusive-ajax.js'をインクルードする必要があります。 – Jecoms

+0

「ルーティング」の種類が不明な場合 - 最も簡単なオプションは、2番目のコンテンツをajax呼び出し(jquery)で読み込むことです。 –

+0

これはとても古くて便利なので、角度を使う方法はありますか? –

答えて

0

これは私が使用したものであり、それは私の作品:

$.ajax({ 
    type: 'GET', 
    url: 'Home/ChatContentView', 
    dataType: 'html' 
}).done(function (response) { 
    $('div#container').html(response); 
}); 
+1

これはあなたのコードを投稿する必要がある理由です。あなたは角度/ .net MVC固有のソリューションを求めました。だから誰も簡単なjquery ajax呼び出しを提案するつもりはありません。 – Jecoms

+0

私のコードを掲載しました。私の解決策は動作しますが、角度は機能しません...これは実際には解決策ではない部分的な解決策です...私は適切な角度サイクルを得るために部分ページを読み込むために角度を使うべきです。 –

関連する問題