ASP.NET MVC5 高级编程-学习日记-第一章 入门
1.1 ASP.NET MVC 简介
ASP.NET是一种构建Web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架。
1.1.1 MVC模式简介
MVC将应用程序的用户界面(User Interface, UI)分为三个主要部分:
- 模型:一组类,描述了要处理的数据以及修改和操作数据的业务规则。
- 视图:定义应用程序用户界面的显示方式。
- 控制器:一组类,用于处理来自用户、整个应用程序流以及特定应用程序逻辑的通信。
MVC作为用户界面模式
注意这里的MVC指的是一种用户界面模式。MVC模式是处理用户交互的一种解决方案,它并不处理应用程序关注的其他问题,如数据访问、服务交互等。
1.1.2 MVC在Web框架中的应用
MVC模式经常应用于Web程序设计中。在ASP.NET MVC中,MVC三个主要部分的定义大致如下:
- 模型:模型是描述程序设计人员感兴趣问题域的一些类,这些类通常封装存储在数据库中的数据,以及操作这些数据和执行特定域业务逻辑的代码。在ASP.NET MVC中,模型就像使用了某种工具的数据访问层(Data Access Layer),这种工具包括实体框架(Entity Framework)或者与包含特定域逻辑的自定义代码组合在一起的NHibernate。
- 视图:一个动态生成HTML页面的模板。
- 控制器:一个协助视图和模型之间关系的特殊类。它响应用户输入,与模型进行对话,并决定呈现哪个视图(如果有的话)。在ASP.NET MVC中,这个类文件通常以后缀名Controller表示。
注意 MVC是一种高级架构模式,它的使用取决于具体应用环境。ASP.NET MVC的上下文是问题域(一个无状态的Web环境)和宿主系统(ASP.NET)。
ASP.NET MVC注重应用MVC模式来提供一个运行在.NET平台上的强大Web开发框架,上下文则是其强大原因的一部分。
ASP.NET采用了大部分觊觎MVC的Web框架所使用的一些基本原则:
- 约定优于配置(convention over configuration)
- 不重复(又名DRY原则)
- 尽量保持可插拔性(pluggability)
- 尽量为开发人员提供帮助,单必要时允许开发人员自由发挥。
1.2 ASP.NET MVC5概述
ASP.NET MVC5主要特性:
- One ASP.NET
- 新的Web项目体验
- ASP.NET Identity
- Bootstrap模板
- 特性路由
- ASP.NET基架
- 身份验证过滤器
- 过滤器重写
1.2.1 One ASP.NET
在MVC5中,只有一种ASP.NET项目类型。在Visual Studio2013中创建新的Web应用程序时,没有复杂的选项,只有Web应用程序。不只是在一开始创建ASP.NET项目时才支持这么做:在不断开发的过程中,可以添加对其他框架的支持,因为工具和特性都是作为NuGet包提供的。例如,如果开发过程中改变了想法,就可以使用ASP.NET基架向任何现有的ASP.NET应用程序添加MVC。
1.2.2 ASP.NET Identity
ASP.NET Identity的一些主要的新特性:
- One ASP.NET Identity系统:为了支持前面介绍的One ASP.NET这个关注点,新的ASP.NET Identity被设计为可在整个ASP.NET家族中使用。
- 控制用户资料数据:ASP.NET Identity使得存储额外的用户信息很容易,只需要在代表用户的模型类中添加属性即可。
- 控制优于持久化:默认情况下,所有用户信息都使用Entity Framework Code First存储,所以可以获得我们在使用Entity Framework Code First时已经习惯了的简单性和控制。但是,也可以插入其他任何我们希望使用的持久化机制,包括其他ORM、数据库、自定义的Web服务等。
- 可测试性:ASP.NET Identity API是使用接口设计的,所以允许为用户相关的应用程序代码编写单元测试。
- 基于声明:虽然ASP.NET Identity仍然支持用户角色,但是也支持基于声明的身份验证。
- 登录提供器:ASP.NET Identity并不是只关注用户名/密码身份验证,而是也理解用户经常通过社交服务-提供器和Windows Azure Active Directory进行身份验证。
- NuGet分发:AP.NET Identity 作为NuGet包安装到应用程序中。这意味着可以单独安装ASP.NET Identity,并且通过更新一个NuGet包,就可以把它升级到新版本。
1.3 安装MVC5和创建应用程序
1.3.1 创建ASP.NET MVC5应用程序
创建一个新的MVC项目的步骤如下:
(1).选择File|New Project选项。
(2).在New Project对话框左栏的Installed Templates部分,选择Visual C#|Web模板列表,这件在中间栏显示Web应用长须类型列表。
(3).选择ASP.NET Web Application,将应用程序命名为MvcMusicStore,然后单击OK按钮。
1.3.2 New ASP.NET Project对话框
创建一个新的MVC5应用程序后,将会出现New ASP.NET Project对话框。该对话框列出了所有ASP.NET应用程序共有的一些选项:
- 选择模板
- 添加框架文件夹和核心引用
- 添加单元测试
- 更改身份验证
- Microsoft Azure
前两个选项(Select a template和Add folders and core references for)共同起作用。模板选择了一个起点,然后使用框架复选框来添加对Web Forms、MVC和Web API的支持。这意味着我们可以选择一个MVC模板,然后添加Web Forms支持,或者可以选择空模板,添加对框架的支持。这种功能不止在创建新项目时可以使用:任何时候都可以添加对任意框架的支持,因为框架文件夹和核心引用是通过NutGet包添加的。
1.选择一种应用程序模板
- MVC:MVC模板设置一个标准的、带几个视图的Home Controller,配置站点布局,并包含一个MVC特定的Project_Readme.html页面。
- Empty:空模板会建立一个空的项目骨架。得到的文件包括一个web.config(包含一些默认的网站配置设置)和创建项目所需的几个程序集引用,但是仅此而已。这个模板不会提供代码,不包含JavaScript或CSS脚本,甚至不会提供一个动态地HTML文件。
- Web Forms:Web Forms模板为ASP.NET Web Forms开发发下基础。
- Single Page Application:Single Page Application模板创建的应用程序主要通过JavaScript请求Web API服务驱动,而不是采用传统的Web页面请求/相应周期。最初的HTML由一个MVC Home Controller提供,其余的服务器端交互则有一个Web API控制器处理。次模板使用Knockout.js库来帮助管理浏览器中的交互。
- Facebook:这个模板方便了构建一个Facebook“画布”应用程序,也就是看上去托管在Facebook网站上的一个Web应用程序。
- Azure Mobile Service:Azure Mobile Service现在支持Web API服务,所以使用这个模板能够比较容易地创建针对Azure Mobile Service的Web API。
2.测试
所有的内置项目模板都有一个选项,用来使用样本单元测试创建单元测试项目。
3.配置身份验证
可选择身份验证方法:
- No Authentication:用户不需要身份验证的应用程序,例如没有管理单元的公共网站。
- Individual User Accounts:用于在本地存储用户配置文件的应用程序。支持用户名/密码账号,以及社交认证提供程序。
- Organizational Accounts:用于通过某种形式的活动目录进行身份验证的账户。
- Windows Authentication:用于内部网应用程序
新MVC项目在应用程序的根目录下包含Project_Readme.html文件。创建项目时间自动显示这个文件。这是一个完全自包含的文件----所有的样式都通过HTML样式标签包含进来,所以使用完该文件后可以删除它。
1.4 ASP.NET MVC应用程序的结构
用VS创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录。
这些由VS添加的默认文件提供了一个可以运行的应用程序的基本结构,完整地包括了首页、关于首页、账户登录/退出/注册页面以及一个未经处理的错误页面(所有页面彼此联系起来,可以直接使用)。
1.4.1 ASP.NET MVC和约定
默认情况下,ASP.NET MVC应用程序对约定的依赖性很强。这样就避免了开发人员配置和指定一些项。
ASP.NET MVC的约定非常容易理解,下面是预期的程序结构:
- 每个Controller类的名字以Controller结尾。
- 应用程序的所有视图放在单独的Views目录下。
- 控制器使用的视图实在Views主目录的一个子目录中,这个子目录是根据控制器名称来命名的。
ASP.NET MVC5 高级编程-学习日记-第一章 入门的更多相关文章
- ASP.NET MVC5 高级编程-学习日记-第二章 控制器
2.1 控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理, ...
- ASP.NET MVC5 高级编程-学习日记-第三章 视图
开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精心编写的整洁代码是开发一个可维护Web应用程序的基础. 3.1 视图的作用 视图的职责是向用户提供用户界面.当控制器针对被请 ...
- ASP.NET MVC5 高级编程 第5章 表单和HTML辅助方法
参考资料<ASP.NET MVC5 高级编程>第5版 第5章 表单和HTML辅助方法 5.1 表单的使用 5.1.1 action 和 method 特性 默认情况下,表单发送的是 HTT ...
- ASP.NET MVC5 高级编程 第3章 视图
参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...
- ASP.NET MVC5 高级编程 第2章 控制器
参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...
- Asp.net MVC4高级编程学习笔记-视图学习第一课20171009
首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...
- ASP.NET MVC5高级编程 之 模型
1. 为MVC Music Store建模 Models文件夹(右击) --> 添加 --> 类 为类添加对应的属性: public class Album { public virtua ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
- Java学习笔记 第一章 入门<转>
第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...
随机推荐
- strace使用
统计信息 -c -- count time, calls, and errors for each syscall and report summary 输出结果到文件 -o 例如 strace ...
- Linux学习笔记:Jenkins的使用
在windows中使用Jenkins(Linux系统下类似),步骤是: 1 从官网下载jenkins项目的war包 2 将jenkins.war放到tomcat的webapps目录中,启动tomcat ...
- NOIP2017普及组T2题解
还是神奇的链接 上面依然是题目. 这道题依然很简单,比起2015年的普及组t2好像还是更水一些. 不过这道题能讲的比第一题多. 我们一起来看一下吧! 这一题,我们首先将书的编号全部读入,存在一个数组里 ...
- go基础知识之变量,类型,常量,函数
3 变量 变量是什么 变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值.在 Go 中,有多种语法用于声明变量. 声明单个变量 var name type 是声 ...
- OpenCV-图像通道转换问题
OpenCV-MAT对象中使用plt.imshow(img[:,:,::-1])如何实现将第二轴反向? 系统平台:win10 x64 一.明确几个概念: 1.OpenCV内部每个通道并没有固定对应某种 ...
- mysql之表与表关联和表操作
一 表于表之间的关联 foregin key:设置外键表于表之间建立关联. 多对一关联: 创建步骤,应该先创建好被关联的那一张表,然后再去创建关联的那一张表. 关联表的多条对应着被关联的那张表的一条记 ...
- Python开课复习-10/16
import random # random 随机数模块 # print(random.random()) #----float 大于0且小于1之间的小数# print(random.choice([ ...
- Javascript php 异常捕获
JavaScript try 语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. JavaScript 语句 try 和 cat ...
- Oracle常用命令-用户、表空间、赋权限、导入导出
1.1 删除表空间 drop tablespace QBKJ including contents and datafiles; 1.2 删除用户 drop user admin cascad ...
- hibernate添加数据报错:Could not execute JDBC batch update
报错如下图所示: 报错原因:在配置文件或注解里设置了字段关联,但数据却没有关联. 解决方法:我的错误是向一个多对多的关联表里插入数据,由于表中一个字段的数据是从另一张表里get到的,通过调试发现,从以 ...