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学习笔记 第一章 入门<转>

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

随机推荐

  1. [Jmeter] Run Command to generate a specific listener’s chart report

    Run Command to generate a specific listener’s chart report: Download cmdrunner-2.0.jar : https://jme ...

  2. pytho常用模块2——random

    random模块用来生成随机数,有以下几个常用方法: import random random.random() #产生随机数[0-1) random.randint(a,b) #产生随机整数[a,b ...

  3. mybatis 操作数据错误Truncated incorrect DOUBLE value: ''

    网上查到遇到次错误造成的原因: UPDATE TSYS_ROLE_RIGHTSET ACTIVE_FLAG = '2' and UPDATE_PERSON = 'CaiYiHua' and  UPDA ...

  4. 学习selenium的过程

  5. Microsoft translater

    professional  tranlater tool : https://translator.microsoft.com/neural/

  6. 【转】Linq表达式、Lambda表达式你更喜欢哪个?

    [转]Linq表达式.Lambda表达式你更喜欢哪个? 什么是Linq表达式?什么是Lambda表达式? 如图: 由此可见Linq表达式和Lambda表达式并没有什么可比性. 那与Lambda表达式相 ...

  7. 51.从首页内容跳转到第二个Tabbar控制器(controller)

    TabBarController: 创建TabBar的控制器 注意:在点击的内容方法页面,添加头文件 #import "TabBarController.h" #import &q ...

  8. mysql之数据库的介绍和基本的增删改查

    一 学前知识 什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息. 什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器.一般还要有一个备份的负载均 ...

  9. poj-2406(字符串hash)

    题目链接:传送门 思路:字符串hash,终止条件竟然判断错了,真是太大意了. #include<iostream> #include<cstdio> #include<c ...

  10. 高性能Java RPC框架Dubbo与zookeeper的使用

    https://blog.csdn.net/qq_38982845/article/details/83795295