首先创建asp.NET mvc 程序,创建一个web api :

 1 public class UserController : ApiController 2     { 3         private static List<User> userList = new List<User>() { 4                                       new User(){ UserID=1, Name="zhangsan"}, 5                                       new User(){UserID=2, Name="lisi"}, 6                                       new  User (){UserID=3, Name="wangwu"}, 7                                       new User(){ UserID=4,Name="zhaoliu"} 8         }; 9 10 11         public IEnumerable<User> Get()12         {13             return userList.OrderBy(p => p.UserID);14         }15 16         public User Get(int id)17         {18             return userList.Where(p => p.UserID.Equals(id)).FirstOrDefault();19         }20 21         public void Post(User user)22         {23             userList.Add(user);24         }25 26         public void Put(User user)27         {28          userList.Remove(userList.Where(p => p.UserID.Equals(user.UserID)).FirstOrDefault());29          userList.Add(user);30         }31 32     }

其中User 类:

1     public class User2     {3         public int UserID { get; set; }4         public string Name { get; set; }5     }

这样web api 就创建完毕了,接下来我们就要在项目中引用angular.js 所需要的js 文件。可以在nuget 中下载直接搜索anjular :

安装完成之后,项目中就会在scripts文件夹出现以下文件:

然后在新建 一个AngularJS 文件夹添加两个js空文件:app.js和controllers.js:

其中app.js 代码:

1 var userapp = angular.module("userapp", ['ngRoute']);2 3 userapp.config(['$routeProvider', function ($routeProvider) {4 5     $routeProvider.when('/Home/index', { templateUrl: '/Home/UserList', controller: 'userlistController' })6                   .when('/Home/EditUser/:id', { templateUrl: '/Home/EditUser', controller: 'edituserController' })7                   .otherwise({ templateUrl: '/Home/UserList', controller: 'userlistController' });8 9 }]);

我们知道anjular.js 是模块化的所以定义了一个userApp模块, 在UserApp模块中,我们定义了路由和布局模板。userApp的默认URL是/Home/index,即http://localhost:10554/Home/Index。跳转到编辑用户的路由是/Home/EditUser/:id 其中:id 是传递的参数,如果不满足这两个路由的话就会跳转到/Home/UserList 。我分别给每个路由指定了路由对应的地址以及controller。

controllers.js 代码:

 1 userapp.controller('userlistController', function ($scope, $http) { 2  3     $scope.Users = []; 4  5     $scope.Load = function () { 6         $http.get("/api/user").success(function (data, status) { 7  8             $scope.Users = data; 9         })10 11     };12 20     $scope.Load();21 22 });23 24 25 userapp.controller('edituserController', function ($scope, $routeParams, $http) {26 27     $scope.UserID = $routeParams.id;28     $scope.User = {};29     $scope.Save = function () {30         $http.put("/api/user", { userid: $scope.User.UserID, name: $scope.User.Name }).success(function (data, status) {31            32         })33     };34 35     $http.get("/api/user/" + $scope.UserID).success(function (data, status) {36         $scope.User = data;37     })38 39 });

我定义了两个controller :userlistController 和edituserController,这两个controller 是在app.js中的路由中定义好的,必须一致。其中userlistController 是调用web api 来获取用户的列表,edituserController 是用来编辑用户。$routeParams.id 是获得传递过来的参数的。

这样js 文件基本写好。然后看页面是怎么和angular.js 来配合使用的。

Home/Index.cshtml 代码:

 1 <div ng-app="userapp"> 2     <div ng-view></div> 3 </div> 4  5  6 @section scripts{ 7     <script src="~/Scripts/angular.min.js"></script> 8     <script src="~/Scripts/angular-route.js"></script> 9     <script src="~/angularjs/app.js"></script>10     <script src="~/angularjs/controllers.js"></script>11 }

其中ng-app 是告诉页面需要加载的是anjular.js 的那个模块,这里是userapp。app.js 中已经定义。ng-view 是告诉angular.js 这一块来呈现view 。其中angular-route.js文件需要被引用,不然是不支持路由的。

然后我们需要在home 文件夹新建UserList.cshtml 和EditUser.cshtml。

UserList.cshtml 代码:

 1 @{ 2     Layout = null; 3 } 4  5 <div style="width:500px; margin:20px auto;"> 6     <table class="table table-bordered table-hover"> 7         <thead> 8             <tr> 9                 ID10             </tr>11             <tr>12                 UserName13             </tr>14         </thead>15         <tr ng-repeat="user in Users">16             <td>17                 `user`.`UserID`18             </td>19             <td>20                 `user`.`Name`21             </td>22             <td>23                 <a class="btn-link" href="#/Home/EditUser/`user`.`UserID`">Edit</a>24             </td>25         </tr>26     </table>27 </div>

其中href="#/Home/EditUser/`user`.`UserID` 就是一个路由地址点击的时候anjular.js 会检查这个路由和那个路由相匹配然后跳转到相应的url 中。

EditUser.cshtml 代码:

1 @{2     Layout = null;3 }4 5 <div style="width:200px; margin:10px auto;">6     Name:  <input ng-model="User.Name" />7     <br />8     <button class="btn btn-info" ng-click="Save()">Save</button>9 </div>

效果如下:

首先我们运行程序,一开始的时候的路由是/Home/Index 就会跳转到/Home/UserList.cshtml 中

然后我们点击编辑:注意查看地址栏的地址:

通过/Home/EditUser/1 这个路由,angular.js 就会让页面跳转到/Home/EditUser.cshtml 这个页面。点击保存成功。

转载于:https://blog.51cto.com/kiujyhgt/1917302

angular.js的路由和模板在asp.net mvc 中的使用相关推荐

  1. ASP.NET MVC教程五:ASP.NET MVC中的路由

    一.概述 在ASP.NET MVC架构中,控制器在3大核心构件中处于中心地位,通过控制器支配模型和视图,然而从浏览器发出的请求到控制器还需要路由的协助,路由将特定的请求和控制器的动作对应起来. 在AS ...

  2. 如何在 ASP.NET MVC 中集成 AngularJS

    介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...

  3. 如何在 ASP.NET MVC 中集成 AngularJS(3)

    今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...

  4. 如何在 ASP.NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  5. ASP.NET MVC中controller和view相互传值的方式

    ASP.NET MVC中Controller向view传值的方式: ViewBag.ViewData.TempData 单个值的传递 Json 匿名类型 ExpandoObject Cookie Vi ...

  6. [转载]Asp.net MVC中Controller返回值类型

    Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求: 必须 ...

  7. html action能跨域么,ASP.NET MVC 中设置跨域

    原标题:ASP.NET MVC 中设置跨域 来源:GetPower cnblogs.com/gdpw/p/9236661.html 程序员共读整理发布,转载请联系作者获得授权ASP.NET MVC中设 ...

  8. ASP.NET MVC中你必须知道的13个扩展点

         ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...

  9. 在asp.net mvc中使用PartialView返回部分HTML段

    问题链接: MVC怎样实现异步调用输出HTML页面 该问题是个常见的 case, 故写篇文章用于提示新人. 在asp.net mvc中返回View时使用的是ViewResult,它继承自ViewRes ...

最新文章

  1. windows WebStorm常用快捷键记录,常用的都在这儿找扒
  2. 编写书籍《C语言嵌入式系统编程修炼之道》序言
  3. 前端综合能力系列之git与gitflow
  4. async框架源码研究
  5. 计算机四级考试题数据库,计算机四级考试《数据库系统工程师》试题及答案
  6. Spring文件上传
  7. iOS:Covert p12 back to CSR
  8. 简洁的c++http协议获取内容(二)--获取服务器图片
  9. 关于Redis、ZooKeeper等分布式锁原理的一些思考
  10. Centos 7安装docker实战
  11. wps表格怎么用计算机,怎么样在wps表格中添加计算器
  12. 《刘润·5分钟商学院》学习总结01
  13. matlab峰度和偏度,峰度和偏度
  14. 理解“万事万物皆对象“
  15. 综艺真人秀势不可挡,互联网金融也要投广告?
  16. 每日新闻:麦肯锡:未来10年 人工智能为全球GDP贡献1.2%增长;工信部下发第19批CDN、云服务牌照...
  17. 缓存穿透、击穿、雪崩
  18. 使用office的邮件合并和文档附件制作带照片的准考证
  19. 微信公众号的二维码怎么生成
  20. 软件(程序)编写通法

热门文章

  1. Firefox Test Pilot 计划正式关闭
  2. 第一天:认识python
  3. linux上部署javaWeb项目
  4. 如何重新定义云数据中心的资源利用率
  5. Cacti设置流量阀值实现邮件报警
  6. 《JAVA与模式》之装修者模式
  7. 百度分享自定义内容和图片
  8. volatile的正确使用姿势
  9. 黑客攻防技术宝典Web实战篇第2版—第8章 攻击访问控制
  10. netty 水位线与oom