2017-01-23 134 views
1

我學的角度,我試圖使用路線的第一次,但事情是不對的,這是行不通的:AngularJS路由和ASP.net MVC

這是我的主要觀點(UsingDirectivesWithDataBinding .cshtml):

@{ 
    Layout = null; 
} 

<html> 
<head>  
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> 
    <script type="text/javascript" src="~/Scripts/angular-route.js"></script> 
    <script type="text/javascript" src="~/Scripts/AngularFile.js"></script> 
    <title> 
     Using AngularJS Directives and Data Binding 
    </title> 
</head> 
<body> 

    <div data-ng-app="myApp" data-ng-controller="SimpleController">  
     <a href="#/view1"> View 1</a> 
     <a href="#/view2"> View 2</a> 
     <div data-ng-view=""></div> 
    </div> 

</body> 
</html> 

正如你可以看到我有一個叫這條路兩個鏈接:「#/視圖2」或者這一個:「#/廠景」,但它帶我去主頁控制器的索引頁面,而不是留在同一頁面並顯示我想要顯示的部分視圖。這是在家庭控制器的代碼我有:

public ActionResult UsingDirectivesWithDataBinding() 
     { 
      return View(); 
     } 

     public PartialViewResult View1() 
     { 
      return PartialView(); 
     } 

     public PartialViewResult View2() 
     { 
      return PartialView(); 
     } 

這是我的JavaScript文件(AngularFile.js):

var app = angular.module("myApp", ["ngRoute"]); 
app.controller("SimpleController", function ($scope) { 
    $scope.firstName = "John"; 
    $scope.lastname = "Doe"; 
    $scope.customers = [ 
     { name: "Dave Jones", city: "Phoenix" }, 
     { name: "Jamie Riley", city: "Atlanta" }, 
     { name: "Heedy Rowt", city: "Memphis" }, 
     { name: "Thomas Winter", city: "Seattle" } 
    ]; 
}); 

app.config(function ($routeProvider) { 
    $routeProvider.when("/view1", { 
     templateUrl: "/Home/View1", 
     controller: "SimpleController" 
    }) 
    .when("/view2", { 
     templateUrl: "/Home/View2", 
     controller: "SimpleController" 
    }) 
    .otherwise({redirectTo : "/view1"}) 
}) 

爲什麼不工作?

+0

的可能的複製[URL哈希爆炸(#!/)前綴,而不是簡單的哈希(#/)](http://stackoverflow.com/questions/41226122/URL哈希爆炸前綴代替-的-簡單散列) – Mistalis

回答

1

角1.6採用了全新的hashPrefix,在你的HREF嘗試改變視圖1#/到#!/廠景。

0

我認爲你是服務器端(ASP.net)路由和客戶端(Angular.js)路由之間的混淆。不知道您是否試圖從ASP.net呈現視圖並將其提供給角路由器。如果是的話,那麼不幸的是,這是行不通的。 Angular路由器不會進行服務器調用來獲取視圖。該視圖必須在客戶端作爲模板(HTML靜態文件)隨時可用,角度將在模板上呈現數據(在從API中獲取後)。

所以基本上這條線templateUrl: "/Home/View1"將成爲templateUrl: "/Home/View1.html"其中View1.html是一個靜態文件(角模板)。

有關詳細信息檢查了這一點>AngularJs routing with Asp.Net Mvc