2014-01-16 26 views
1

我一直在网上搜索解决方案,但找不到任何能够解决我的问题的解决方案。 我想用AngularJS和MVC做客户端路由。使用AngularJS和MVC进行路由

这是我使用指导线的Plunker,但它并不能帮助我。我的MVS2项目文件夹结构如下: $ root/Views/Home/Home.html

我得到的错误是找不到页面。我在这里错过了什么?

AngularJS

// create the module and name it myApp 
var myApp= angular.module('myApp', ['ngRoute']); 

// configure our routes 
myApp.config(function ($routeProvider) { 
    $routeProvider.when('/', {templateUrl: 'Home.html',controller: 'mainController'}) 
}); 

// create the controller and inject Angular's $scope 
scotchApp.controller('mainController', function ($scope) { 
// create a message to display in our view 
    $scope.message = 'Home Page should appear here'; 
}); 

HTML文件的访问

<html data-ng-app="myApp"> 
<head runat="server"> 
    <title> 
     <asp:ContentPlaceHolder ID="TitleContent" runat="server" /> 
    </title> 
</head 
<body data-ng-controller="mainController"> 
    <div id="Div1"> 
     <div data-ng-view></div> 
    </div> 
</body> 
</html> 
+0

您是否尝试过从浏览器请求Home.html以确定它是否真的被服务? – idursun

+0

我已将该网址复制到我的浏览器,但没有找到它。我不知道如何构建我的路由以获得正确的页面? – Gericke

回答

4

MVC块Views文件夹!它将始终返回HTTP状态404!

为什么?这是为了安全。它阻止访问者查看您的视图文件(ascx,cshtml,vbhtml等),这是源代码。

它是如何做?您会注意到Views文件夹有一个web.configWeb.config配置为返回404

这里是web.config

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 

通知的代码段,对于任何路径和任何HTTP方法,该处理程序是HttpNotFoundHandler

解决方案:不使用您的AngularJS模板的View文件夹或修改web.config需要您自担风险

+0

感谢您提供这些宝贵的信息,我根本不知道这一点。从你的答案中,我决定走一条不同的路线,并且完美地工作。将现在发布答案 – Gericke

1

答案是LostInComputers给了我我找到了一个将html页面注入到我的MVC项目的解决方案。

的.js

var myApp = angular.module('myApp', ['ngRoute']); 

myApp.config(function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
      templateUrl: '/templates/Home.html', 
      controller: 'mainController' 
     }) 
.when('/about', { 
    templateUrl: '/templates/About.html', 
    controller: 'mainController' 
}) 

$routeProvider.otherwise({ redirectTo: '/' }); 

}); 

我所做的是我的根目录下创建一个模板文件夹,并在里面加了我的.html页面。 这对我来说非常合适。