使用AngularJS和MVC进行路由

时间:2014-01-16 12:52:22

标签: angularjs asp.net-mvc-routing

我一直在网上搜索解决方案,但找不到任何可以解决我问题的方法。 我正在尝试使用AngularJS和MVC进行客户端路由。

这是我用于指南行的Plunker,但它对我没有帮助。我的MVS2 Project文件夹结构如下: $根/查看/主页/ 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>

2 个答案:

答案 0 :(得分: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

解决方案:不要将View文件夹用于AngularJS模板或修改web.config,风险自负

答案 1 :(得分: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 页面。 这对我很有用。