.net mvc笔记1_ The MVC Pattern
1、controller中的每一个public method被称为action method,意味着你可以从web上通过URL来调用它,以此来执行一个action。
2、当我们从action method返回ViewResult对象的时候,将指示MVC提供一个视图。可以调用无参数的View()来创建ViewResult对象,例如return View(),这会告诉MVC为此action提供默认视图。例如,在HomeController中有action method名为Index(),那么它的默认视图就为Views/Home/index.cshtml 这是一个约定,这个约定就是视图拥有跟action method相同的的名字。
3、要为哪一个action method创建视图,就在这个action method上点鼠标右键,选择Add View
4、我们可以从action method中返回其他结果,除了字符串和ViewResult对象。例如,如果我们返回RedirectResult,将导致浏览器重新跳转到其他的URL。如果我们返回HttpUnauthorizedResult,我们会强制用户进行登录。
5、将数据从controller传递到view的一种方式是使用ViewBag对象。这是基础类Controller的一个成员。ViewBag是一个动态对象,你可以给它分配任何属性,并使这些值在随后提供的view中可见。
6、model是用于表现真实世界的对象、处理过程、以及定义问题的规则,也被称为domain(域)。model通常被称为domain model,包含C#对象(被称为domain object域对象),这就组成我们应用程序的论域,以及操纵它们的方法。一个设计良好的MVC应用开始于一个设计良好的model。
7、Html.ActionLink是HTML helper方法。ActionLink方法接收两个参数:第一个是显示出来的链接文字,第二个是点击该链接时要执行的行为(action)。例如@Html.ActionLink("RSVP Now", "RsvpForm")
8、不像传统的ASP.NET应用,MVC的URL不会直接指向物理文件。每一个action method都有自己的URL,MVC用ASP.NET的路由系统翻译这些URL并指定到对应的action上。
9、注意 没有action是出现404错误,有了action没有对应的view是出现找不到对应的页面
10、另一个便利的helper method是Html.BeginForm,它可以产生HTML的表单元素,可以postback给action method
用法如下:
@using (Html.BeginForm()) {
… form contents go here …
}
不带参数时,它会自动假设我们是想postback给同一个URL(也就是到达本页面的URL,也就是传回给本页面对应的action method)
正常地,当我们这样使用时,using语句确保控制流程流出该语句块作用范围(out of scope)时将对象销毁。这通常用于数据库连接,例如,确保在查询完成后关闭连接就可以这样用。(using关键字的应用不同于在类中将一个命名空间里的类带入到作用范围scope中。)
11、
为了接收和处理提交的表单数据,我们将添加第二个RsvpForm行为方法:
(1)响应HTTP GET请求的方法:每次有人点击链接时,浏览器发出的正常请求就是一个GET请求。当有人访问/Home/RsvpForm时就由这一版的行为负责显示初始化的空白表单。
(2)响应HTTP POST请求的方法:默认情况下,由Html.BeginForm()产生的表单被浏览器提交时将产生一个POST 请求。这一版的行为负责接收提交的数据并决定如何处理。
在两个独立的C#方法中处理GET和POST请求,让两个方法负责不同的任务,这可以使我们的代码保持整洁。两个行为方法都由同一个URL调用,MVC根据处理GET或POST请求来调用对应的方法。
12、在MVC应用中,有效性验证通常应用在domain model中,而不是在user interface。这意味着我们只需要在一个地方定义了我们的有效性规则,那么在任何使用了这个model class的地方它都有效。ASP.NET MVC支持随属性一起定义的声明式的验证性规则,在System.ComponentModel.DataAnnotations命名空间中。
13、Models定义了你的应用可以工作的范围(universe),以及在其中操纵数据的操作。另外还负责保留所有的状态和数据的一致性。Models不产生UI也不处理请求,这些是由view和controller负责的。View包含了将model中的元素显示给用户所必需的逻辑,再也没有其它多余的内容了。它们不会直接意识到model,也不会以任何方式直接跟model交流。Controller是view和model之间的胶合剂。客户端到来的请求由controller来服务,并选择合适的view来显示给用户,如果需要的话还会在model上执行合适的操作。
14、MVC体系结构的每一部分都是定义清晰并且独立的,这被称为“关注点分离”(separation of concerns)。在model中操纵数据的逻辑只会包含在model中,显示数据的逻辑只会包含在view中,处理用户的请求和输入的代码只会包含在controller中。有了清晰的分离,你的应用会非常容易维护和扩展生命期,不管它有多么大。
15、在MVC中,controller是C#类,通常派生自System.Web.Mvc.Controller类。派生于controller的类中的每一个public method都被叫做action method,通过ASP.NET的路由系统与结构化的URL相联系。当一个请求被发送到与URL相联系的action method时,controller类中的语句将被执行来在domain model上完成操作,并选择view来显示到客户端。

16、ASP.NET MVC不会施加任何约束在你的domain model实现上。你可以使用常规的C#对象来创建model,实现数据的留存(保留) 你可以使用任何一个数据库、或ORM框架、或者.NET支持的其他数据工具。Visual Studio创建一个/Models文件夹作为MVC项目模版的一部分。这适合简单的项目,更复杂的应用倾向于在单独的Visual Studio项目中来定义domain model。
17、我们已经描述过一个domain model如果表现你应用中的真实世界,包括表现你的对象、处理和规则。Domain model是MVC应用的核心。其他一切,包括view和controller只是与domain model互动的手段。
18、ASP.NET MVC没有指定domain model必须要用什么技术,我们可以自由选择可以与.NET框架交互的任何技术。不过,ASP.NET MVC也给我们提供了基础设施和约定来帮助我们连接到(伴随着controllers和views,以及MVC框架的)domain model中的类。这里有三个关健特性:
(1)Model binding,这是基于约定的特性,它使用进来的数据,通常是HTML表单post进来的数据来自动填充model object。
(2)Model metadata,让你描述你的model classes的含义给framework。例如,你可以对它们属性给出人类可读的描述,或者是给出提示他们如何显示。MVC框架会自动生成显示或者在视图上为你的model class生成可编辑的UI。
(3)Validation,在model binding期间执行,并应用被定义为metadata的规则。
.net mvc笔记1_ The MVC Pattern的更多相关文章
- MVC笔记之一:MVC编程模型
MVC是ASPX.NET用于构造Web应用的一种框架,和传统的ASPX.NET开发模式(Web Form)在架构上相同,同样采用三层框架实现,但相比传输开的模式,各层架构更加规范. 传统三层架构: V ...
- spring mvc 笔记
springmvc 课堂笔记 1.Springmvc是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想, ...
- thinkphp学习笔记7—多层MVC
原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...
- MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具
MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013 MVC 5 Scaffolder + ...
- MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013
MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具 经过一个多星期的努力总算完成了单表,多表关联(一对多,多对一)的增删改查的代码 ...
- SSM 实训笔记 -11- 使用 Spring MVC + JDBC Template 实现筛选、检索功能(maven)
SSM 实训笔记 -11- 使用 Spring MVC + JDBC Template 实现筛选.检索功能(maven) 本篇是新建的一个数据库,新建的一个完整项目. 本篇内容: (1)使用 Spri ...
- 学习笔记_Java_day12_设计模式MVC(13).JavaWeb的三层框架(14)
MVC 1. 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Contr ...
- mvc 笔记
@{ ViewBag.Title = "主页"; } <div> 这里就是渲染Body啦.~~不需要写神马<asp:Content />,其实因为Rende ...
- SpringMVC:学习笔记(1)——理解MVC及快速入门
SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...
随机推荐
- 20151222--Ajax三级无刷新
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Qt 圆角矩形+鼠标左键拖动窗口
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWind ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
- Customizing Zend Studio Using the Welcome Page
Customizing Zend Studio Using the Welcome Page Zend Studio enables you to add or remove plugins from ...
- Windows下Apache 虚拟主机 VirtualHost 配置
以下方式适合原生 Apache, XAMPP 和 WAMP 套件 1.修改Apache配置文件(httpd.conf),如下: # Virtual hostsInclude conf/extra/ht ...
- spoj ONP - Transform the Expression 中缀转后缀
题目链接 将中缀表达式转化为后缀表达式. 数字的话直接放到答案的字符串里. 如果是左括号就进栈, 右括号就让栈里的符号都出来直到第一个左括号. 否则的话比较当前符号的优先级和栈顶符号的优先级. #in ...
- IP地址、子网掩码和地址分类
http://blog.csdn.net/bluishglc/article/details/47909593?utm_source=tuicool&utm_medium=referral 实 ...
- Flex整合Spring
工程需要整合Spring和Flex,在网上众多方法中找到了下面这种,记录留存. 个人认为该方法更适合在已有Spring框架的工程中添加Flex时使用,对原工程内容(主要指配置文件)改动较小. 1.添加 ...
- 製程能力介紹(SPC introduction) ─ 製程能力的三種表示法
製程能力的三種表示法 Ck: 準度指標 (accuracy) Ck=(M-X)/(T/2) Cp: 精度指標 (precision) Cp=T/(6σp) 規格為單邊時:Cp=(Tu-X)/3 ...
- [C#]Stream.Write Extension Method
在处理Stream型态时常会使用到Stream.Write这个方法,每次都会有种疑问就是,大多数的处理都是要将Buffer整个写入,為何偏偏每次都要将索引带0,长度带為Buffer的大小呢?另外在处理 ...