.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 ...
随机推荐
- Windows vista以上模拟Alt Ctrl Delete
之前客户要求我们能够在windows登陆界面能够用指定账户批量控制机器登陆,然后用windows credentials provider(vista以上,xp需要用Gina)实现了这个功能,这期间遇 ...
- 用C++编写程序,输出两个字符串的最大公共子字符串
#include<iostream> #include<string> using namespace std; int main() { string s_l,s_sh; ...
- STL源码剖析 迭代器(iterator)概念与编程技法(三)
1 STL迭代器原理 1.1 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型,STL设计的精髓在于,把容器(Containers)和算法(Algorithms)分开,而迭代器(i ...
- 文本域textarea显示输入剩余字数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- getElementByID、getElementsByName、getElementsByTagName实例详解
getElementByID.getElementsByName.getElementsByTagName实例详解 本文通过实例,详细介绍了getElementByID.getElementsByNa ...
- [LeetCode]题解(python):151-Reverse Words in a String
题目来源: https://leetcode.com/problems/reverse-words-in-a-string/ 题意分析: 给定一个字符串,里面包括多个单词,将这个字符串的单词翻转,例如 ...
- Cortex-M3 动态加载一(地址无关代码实现)
这篇文章是自己疑惑究竟地址无关性是如何实现,然后查看汇编和CPU指令手册,最后分析解除自己疑惑的,高手不要鄙视,哈哈. 编译C代码时候需要制定--acps/ropi选项,如下例子: void Syst ...
- java实现发送短信
本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了.在使用前需要注册,注册地址为http://sms.webchinese. ...
- ARM Cortex M3(V7-M架构)硬件启动程序 二
解析 STM32 的启动过程 解析STM32的启动过程 当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main ...
- (6)Xamarin.android google map v2
原文 Xamarin.android google map v2 Google Map v1已经在2013年的3月开始停止支持了,目前若要在你的Android手机上使用到Google Map,就必须要 ...