2017-02-23 59 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

相关问题