2017-02-23 58 views
1

有問題獲取angularJS 路由工作在我的asp.net應用程序。是否需要AngularJS路由才能在asp.net Web應用程序(而不是MVC)中工作的附加設置?

注意:AngularJS路由基本上允許在不刷新頁面的情況下將多個視圖交替插入同一頁面。

他們的任何連接設置或http設置需要調整才能使路由工作? AngularJS路由可以使用ASP設置「開箱即用」(當然包括angular.min.js/angular-route.js腳本)嗎?

僅僅實現一個簡單的ASP.NET Web應用程序

enter image description here

enter image description here

我發現了一些教程這樣一個在網絡上,但它們不與路由的幫助,有時使用不可用的模板。

https://www.pluralsight.com/blog/software-development/angularjs-for-asp-net-applications

澄清 這個帖子,詢問是否需要任何額外的設置,或者如果路由只要作品的權利了與ASP Web應用程序框爲所需的角度腳本(angular.min包括.js/angular-route.js)。

角例 --Index.aspx--

<div ng-app="AngularStore" class="col-lg-12 col-md-12 col-sm-12 col-xs-12" style="min-height:400px;"> 
    <div ng-controller="mainController"> 
     <nav class="navbar navbar-default"> 
      <div class="container"> 
      <ul class="nav navbar-nav navbar-right"> 
      <li><a href="#/cart">Cart</a></li> 
      <li><a href="#/store">Store</a></li> 
      </ul> 
      </div> 
     </nav> 

     <div id="main"> 
      <div ng-view></div> 
     </div> 
    </div> 

<%--//javascript scripts--%> 

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script> 
    <script src="/scripts/angular.min.js"></script> 
     <script src="/scripts/angular-route.js"></script> 
    <script src="script.js"></script> 
</div> 

--script.js--

var storeApp = angular.module('AngularStore', ['ngRoute']). 

config(['$routeProvider', function ($routeProvider) { 
$routeProvider. 
    when('/store', { 
     templateUrl: "partials/store.html", 
     controller: 'HomeController' 
    }). 
    when('/products/:productSku', { 
     templateUrl: 'partials/product.html', 
     controller: 'HomeController' 
    }). 
    when('/cart', { 
     templateUrl: 'partials/shoppingCart.html', 
     controller: 'cartController' 
    }). 
    otherwise({ 
     redirectTo: '/cart' 
    }); 
}]); 

//I have tried including $route in function dependencies here. 
storeApp.controller('HomeController', function ($scope) { 
// create a message to display in our view 
$scope.message = 'Everyone come and see how good I look!'; 
}); 

storeApp.controller('cartController', function ($scope) { 
$scope.message = 'Look! I am a cartController page.'; 
}); 

storeApp.controller('mainController', function ($scope) { 
$scope.message = 'Look! I am a mainController page.'; 
}); 

enter image description here

+1

「有越來越angularJS路由在我的asp.net應用程序時出現問題。」 - 你能提供比這更多的信息嗎?錯誤消息,意外的行爲等... –

+0

我在問是否需要其他設置,或者路由是否與ASP Web應用程序一起開箱即用。爲了清楚起見,我將調整問題。 – Ophiucus

+1

開箱即可能無法正常工作的一件事是需要配置您的Web服務器,以便它知道您的單頁應用程序。假設你的應用程序是從網站的根目錄'/'提供的。如果用戶導航到應用程序內的路線,請說'/ home' Angular負責顯示正確的視圖。現在,如果用戶刷新頁面(位於'/ home' url),則Web服務器需要知道它應該爲單頁應用程序提供文件,並且不要在服務器上查找名爲「home」的目錄。然而,我使用nginx,並且不能多說ASP。 –

回答

0

這些額外的步驟使其工作。

  1. 添加#/的HREF中前:

    <li><a href="#/"><i class="fa fa-home"></i> Home</a></li> 
    <li><a href="#/about"><i class="fa fa-shield"></i> About</a></li> 
    <li><a href="#/contact"><i class="fa fa-comment"></i> Contact</a></li> 
    
  2. 您routeProvider之前加入這個locationProvider配置。

    scotchApp.config(['$locationProvider', function ($locationProvider) { 
        $locationProvider.hashPrefix(''); 
    }]); 
    
1

我已經用最少的問題之前,實施這一。不能回憶需要設置的任何特殊設置。當Web應用程序將大部分頁面包裝在表單中時,表單驗證可能會非常棘手。沒有關於您能夠提供的所有具體問題的更多信息。

+0

嗨Shane,我添加了我的代碼。在嘗試了許多不同的教程後,我確信它是一個ASP.NET事物 – Ophiucus

+1

在這種情況下,添加代碼並沒有幫助。我們需要更好地描述這個問題。錯誤消息,意外行爲的描述等...還有一個你想要混合這兩種技術的具體原因?如果您使用的是angular爲什麼不設置Web API後端? –

+0

只需使用HTML創建客戶端頁面,您使用的Visual Studio模板是什麼? – Ophiucus

相關問題