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 高级编程-学习日记-第一章 入门的更多相关文章

  1. ASP.NET MVC5 高级编程-学习日记-第二章 控制器

    2.1 控制器的角色 MVC模式中的控制器(Controller)主要负责响应用户的输入,冰球在响应时修改模型(Model).通过这种方式,MVC模式中的控制器主要关注的是应用程序流.输入数据的处理, ...

  2. ASP.NET MVC5 高级编程-学习日记-第三章 视图

    开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精心编写的整洁代码是开发一个可维护Web应用程序的基础. 3.1 视图的作用 视图的职责是向用户提供用户界面.当控制器针对被请 ...

  3. ASP.NET MVC5 高级编程 第5章 表单和HTML辅助方法

    参考资料<ASP.NET MVC5 高级编程>第5版 第5章 表单和HTML辅助方法 5.1 表单的使用 5.1.1 action 和 method 特性 默认情况下,表单发送的是 HTT ...

  4. ASP.NET MVC5 高级编程 第3章 视图

    参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...

  5. ASP.NET MVC5 高级编程 第2章 控制器

    参考资料<ASP.NET MVC5 高级编程>第5版 第2章 控制器 控制器:响应用户的HTTP 请求,并将处理的信息返回给浏览器. 2.1 ASP.NET MVC 简介 MVC 模式中的 ...

  6. Asp.net MVC4高级编程学习笔记-视图学习第一课20171009

    首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...

  7. ASP.NET MVC5高级编程 之 模型

    1. 为MVC Music Store建模 Models文件夹(右击) --> 添加 --> 类 为类添加对应的属性: public class Album { public virtua ...

  8. JavaScript高级程序设计学习笔记第一章

    作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...

  9. Java学习笔记 第一章 入门&lt;转&gt;

    第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...

随机推荐

  1. 获取本地的IP地址(内网)

    方法一 public static String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = N ...

  2. Ext4 ComboBox组件使用

     先来看例子: Ext.define('schoolModel', { extend: 'Ext.data.Model', fields: [{ name: 'id', type: 'string' ...

  3. java”伪“批量上传

    jsp页面代码 <form method="post" action="" enctype="multipart/form-data" ...

  4. duilib进阶教程 -- 设置资源路径 (15)

    在前面的教程里,虽然图片都放到了skin文件夹里,但是XML却都在外面,当XML比较多时,就不太好看啦,如下图: 所以需要整理一下,将XML也放入skin文件夹,这样exe的目录就简洁多了: 将XML ...

  5. QProgressBar和QProgressDialog的简单实用

    在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用 首先在designer中拖一个按钮和进度条部件,按下面初始化 ui->pr ...

  6. OpenCASCADE入门指南

    OpenCASCADE入门指南 eryar@163.com 一.概述 荀子说“君子性非异也,善假于物也”.当你会用英语,就可以与世界各国的人交流:当你会用编程语言,就可以与计算机交流:当你会用数学语言 ...

  7. 函数append()和html()的区别

    它们的功能缺失有点相似,但是实际上本质上是有区别: append()函数是为指定元素尾部附加内容,而html()函数是重置元素内部的html内容.·

  8. Python之DataFrame常用方法小结

    https://blog.csdn.net/a786150017/article/details/78573055

  9. 大型网站系统与Java中间件实践读书笔记

    转载:http://blog.csdn.net/ioscodelover/article/details/45047869 1.分布式系统相对集中式而言,是指多台计算机互相通过消息通信进行协作而对外提 ...

  10. 【Java】 大话数据结构(13) 查找算法(4) (散列表(哈希表))

    本文根据<大话数据结构>一书,实现了Java版的一个简单的散列表(哈希表). 基本概念 对关键字key,将其值存放在f(key)的存储位置上.由此,在查找时不需比较,只需计算出f(key) ...