這幾天接觸到了AngularJs的美麗,讓饅頭有點躍躍欲試使用AngularJs來做一個SPA(單頁式網站),沒想到使用AngularJs來製作SPA網站這麼簡單!相信你看完這次的分享,你也想動手試一試!
在Visual Studio中有一個專案範本Single Page Application,不過這個專案範本預設是使用knockout.js來建立的,所以饅頭這邊是使用Web API的專案來開始製作

選擇了Web API專案後,這個專案中本身沒有AngularJs,所以我們要透過Nuget來取得AngularJs(當然,也可以從官方網站下載),在右上角打上AngularJs後就可以找到!我們可以安裝第一個nuget package,這個package預設會幫我們安裝整個AngularJs的Javascript Library

安裝AgnularJs完成後,我們要把Javascript放置到頁面中,當然我們使用MVC中提供的Bundle的功能
1 |
bundles.Add(new ScriptBundle("~/bundles/AgnularJs").Include( |
2 |
"~/Scripts/angular.js", |
3 |
"~/Scripts/angular*")); |
接下來我們把整個(或相關檔案)AngularJs放置到頁面中吧!
這邊要注意一下,angular.js這個檔案要放在最上頭,否則您開啟瀏覽器的開發工具會看到滿江紅喔!
設定Bundle結束後,我們到View\Shared資料夾下的_Layout.cshtml在檔案的下方加入我們剛剛設定的Bundle package
1 |
@Scripts.Render("~/bundles/AgnularJs") |
以及在html的tag上加上ng-app的屬性,最後的Layout會長的樣這樣
04 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
05 |
<meta charset="utf-8" /> |
06 |
<meta name="viewport" content="width=device-width" /> |
07 |
<title>@ViewBag.Title</title> |
08 |
@Styles.Render("~/Content/css") |
09 |
@Scripts.Render("~/bundles/modernizr") |
11 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
13 |
<div class="navbar navbar-inverse navbar-fixed-top"> |
14 |
<div class="container"> |
15 |
<div class="navbar-header"> |
16 |
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> |
17 |
<span class="icon-bar"></span> |
18 |
<span class="icon-bar"></span> |
19 |
<span class="icon-bar"></span> |
21 |
@Html.ActionLink("應用程式名稱", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" }) |
23 |
<div class="navbar-collapse collapse"> |
24 |
<ul class="nav navbar-nav"> |
25 |
<li>@Html.ActionLink("首頁", "Index", "Home", new { area = "" }, null)</li> |
26 |
<li>@Html.ActionLink("API", "Index", "Help", new { area = "" }, null)</li> |
31 |
<div class="container body-content"> |
35 |
<p>© @DateTime.Now.Year - 我的 ASP.NET 應用程式</p> |
39 |
@Scripts.Render("~/bundles/jquery") |
40 |
@Scripts.Render("~/bundles/AgnularJs") |
41 |
@Scripts.Render("~/bundles/bootstrap") |
43 |
@RenderSection("scripts", required: false) |
接下來,我們在Script的資料夾下新增一個Javascrpt檔案,饅頭這邊命名為angular.SPADemo.js
angular.SPADemo.js檔案中我們在這邊設定SPA的路由,饅頭這邊將第一個頁面放置在Home/SPApage1中
01 |
var SPA = angular.module("SPA", ["ngRoute"]); |
03 |
SPA.config(['$routeProvider', "$locationProvider", |
04 |
function ($routeProvider, $locationProvider) { |
07 |
templateUrl: '/Home/SPApage1', |
所以我們要在HomeController中新增一個ActionResult,名為SPApage1,並且回傳PartialView
2 |
public ActionResult SPApage1() |
4 |
return PartialView("_SPApage1"); |
並且將原先在Index頁面中的Html 搬移到該頁面中
01 |
@*新增一個div,並加上一個angularjs的Controller*@ |
02 |
<div ng-controller="Main"> |
03 |
@*原先在Home/Index頁面中的Html*@ |
04 |
<div class="jumbotron"> |
06 |
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS, and JavaScript.</p> |
07 |
<p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p> |
10 |
<div class="col-md-4"> |
11 |
<h2>Getting started</h2> |
13 |
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach |
14 |
a broad range of clients, including browsers and mobile devices. ASP.NET Web API |
15 |
is an ideal platform for building RESTful applications on the .NET Framework. |
19 |
<div class="col-md-4"> |
20 |
<h2>Get more libraries</h2> |
21 |
<p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p> |
24 |
<div class="col-md-4"> |
26 |
<p>You can easily find a web hosting company that offers the right mix of features and price for your applications.</p> |
我們將Index的頁面,改為
這樣我們就可以完成SPA了!(其他頁面依樣畫葫蘆就可以了)
其他的頁面可以繼續在路由新增,然後填上MVC中相對的位置,要記得把畫面的部分移除Layout喔!
PS. 若在Layout有設定Section的CSS或JS的Render,會無法載入喔!所以可以考慮在畫面一開始時,載入所有的JS跟CSS!但這樣的情況要請大家把JS模組化,並且盡可能的重用,否則光載入JS檔案就要等到天荒地老了...
https://code.msdn.microsoft.com/CRUD-Operations-in-MVC-5-d4ff2263/sourcecode?fileId=119238&pathId=457841343
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- AngularJS+ASP.NET MVC+SignalR实现消息推送
原文:AngularJS+ASP.NET MVC+SignalR实现消息推送 背景 OA管理系统中,员工提交申请单,消息实时通知到相关人员及时进行审批,审批之后将结果推送给用户. 技术选择 最开始发现 ...
- ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/ 谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...
- [Angularjs]asp.net mvc+angularjs+web api单页应用
写在前面 最近的工作一直在弄一些h5的单页应用,然后嵌入到app的webview中.之前一直在用angularjs+html+ashx的一套东西.实在是玩腻了.然后就尝试通过asp.net mvc的方 ...
- 案例:1 Ionic Framework+AngularJS+ASP.NET MVC WebApi Jsonp 移动开发
落叶的庭院扫的一干二净之后,还要轻轻把树摇一下,抖落几片叶子,这才是Wabi Sabi的境界. 介绍:Ionic是移动框架,angularjs这就不用说了,ASP.Net MVC WebApi提供数据 ...
- [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
写在前面 前篇文章整理了angularjs学习目录,有园子里的朋友问我要这方面的demo,周末也没什么事,就在之前的单页应用的demo上面添加了增删改查的操作.代码比较简单,这里只列举比较重要的代码片 ...
- ASP.NET MVC和EF集成AngularJS开发
参考资料: 如何在ASP.NET MVC和EF中使用AngularJS AngularJS+ASP.NET MVC+SignalR实现消息推送 [AngularJs + ASP.NET MVC]使用A ...
- 如何在 ASP.NET MVC 中集成 AngularJS(3)
今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...
- 如何在 ASP.NET MVC 中集成 AngularJS(2)
在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...
随机推荐
- Windows Phone 独立存储资源管理器工具
如何使用独立存储资源管理器工具 http://msdn.microsoft.com/zh-CN/library/hh286408(v=vs.92)C:\Program Files (x86)\Micr ...
- 记录我第一次在Android开发图像处理算法的经历
大概是四月底的时候.有人加我QQ问我是否做能做一些基于图像皮肤检測的算法, 主要是实现对皮肤六项指标: 1. 水分 2. 有份 3. 痤疮与痘痘 4. 色斑与肤 ...
- 二维码(QR Code)生成与解析
二维码(QR Code)生成与解析 写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就 ...
- 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)
原文:试图加载格式不正确的程序. (Exception from HRESULT: 0x8007000B) 今天在电脑上部署公司的项目,出现这个错误.Bing后,找到原来是因为项目是32位的,而我的系 ...
- jquery初步总结
1.$(document).ready()方法和window.onload差分法 为页元件的正确操作,我们需要把操作元件JS编写的代码$(document).ready()(Jquery)或windo ...
- swift UI特殊培训38 与滚动码ScrollView
有时我们适合页面的全部内容,我们需要使用ScrollView,额外的内容打通滚动. 什么样的宽度和高度首先,定义,健身器材轻松. let pageWidth = 320 let pageHeight ...
- avalon与双缓冲技术
avalon与双缓冲技术 avalon1.5一个重要技术升级是引进异步渲染.异步渲染在游戏界有一个更专业的名字,叫双缓冲.游戏界要刷新界面与我们刷新浏览器视图,面临的问题是一致的.视图是由许多存在套嵌 ...
- Git与TortoiseGit基本操作(转)
1. GitHub操作 本节先简单介绍 git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作. 先看看SVN的操作吧, 最常见的是 检出(Check out ...), 更新 (U ...
- android 性能測试iozone篇
一:简单介绍 iozone是一个文件系统的benchmark工具, 用于測试不同的操作系统中文件系统的读写性能, 能够測试下面13种模式 0=write/rewrite 1=read/re-read ...
- C++ friend 用法汇总
C++这位朋友同意之类的非公共成员的机制是一个类或函数访问,根据朋友的类型分为三种类型:一般非类成员函数为好友,类成员函数为好友.类为好友. 1 内容朋友 包括报表朋友的朋友以及朋友的定义.明默的感觉 ...