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的更多相关文章

  1. MVC笔记之一:MVC编程模型

    MVC是ASPX.NET用于构造Web应用的一种框架,和传统的ASPX.NET开发模式(Web Form)在架构上相同,同样采用三层框架实现,但相比传输开的模式,各层架构更加规范. 传统三层架构: V ...

  2. spring mvc 笔记

    springmvc 课堂笔记 1.Springmvc是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想, ...

  3. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  4. MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具

    MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013 MVC 5 Scaffolder + ...

  5. MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013

    MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具 经过一个多星期的努力总算完成了单表,多表关联(一对多,多对一)的增删改查的代码 ...

  6. SSM 实训笔记 -11- 使用 Spring MVC + JDBC Template 实现筛选、检索功能(maven)

    SSM 实训笔记 -11- 使用 Spring MVC + JDBC Template 实现筛选.检索功能(maven) 本篇是新建的一个数据库,新建的一个完整项目. 本篇内容: (1)使用 Spri ...

  7. 学习笔记_Java_day12_设计模式MVC(13).JavaWeb的三层框架(14)

    MVC 1. 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Contr ...

  8. mvc 笔记

    @{ ViewBag.Title = "主页"; } <div> 这里就是渲染Body啦.~~不需要写神马<asp:Content />,其实因为Rende ...

  9. SpringMVC:学习笔记(1)——理解MVC及快速入门

    SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...

随机推荐

  1. Web 应用配置Log4Net

    1.第一步:在web.config文件添加如下代码: [sourcecode language="csharp"] <configSections> <secti ...

  2. jQuery EasyUI combobox多选和赋值

    定义select <select id="ID" name=empVO.acunid class="easyui-combobox" required=& ...

  3. 【codevs】2776寻找代表元

    题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用1到n编号.广州二中苏元实验学校一共有m个人,分别用1到m编号.每个人可以参加一个或多个社团,也可以不参加任何社团.每个社团 ...

  4. 无法下载图片 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file

    刚学线程通信,提示: 2016-01-27 11:11:02.246 20-9 gcd3 communicationOfThread[5193:298643] App Transport Securi ...

  5. 关于jQuery中toggle()函数的使用

    今天遇到一个有趣的例子,将它记录下来. 一个一级菜单,里边有一个二级菜单,二级菜单是通过锚点来链接页面元素的.想要实现的效果是当点击锚点时,页面链接到相应锚点,同时二级菜单隐藏,再点击一级菜单时,继续 ...

  6. avalon.js实践 svg地图配置工具

    MVVM模式,在很多复杂交互逻辑下面,有很大的优势.现在相关的框架也很多,现在项目中使用了avalon.js,选择它的原因,是兼容性的考虑,当然也要支持下国内开发大牛,至于性能方面的,没有实际测试过, ...

  7. 关于js作用域

    我们知道在编程语言中,作用域的作用就是控制变量.参数的可见范围和生命周期. 同时内部函数也可访问外部的函数和变量. js中提供了函数作用域的功效,比如在函数中定义的变量外部是无法访问到的: funct ...

  8. iframe自适应高度的问题

    最近工作中遇到了iframe自适应高度的问题. 如果在iframe中写定高度height的属性,并且iframe中内容高度小于给定的height时,会在手机浏览器中莫名的产生下拉框,造成体验度下降. ...

  9. 高精度 java的一些题

    poj 1001 Exponentiation import java.util.*; import java.math.*; public class Main { public static vo ...

  10. 安装solaris_11.2与windows双系统(VM10模拟实现)(一)

    感慨:这周刚接触solaris,装solaris很蛋疼,一个字:慢! 在上面安装软件包依然很慢,无线网也很不稳定. 在上面搭建环境更蛋疼,一个字:惨! 什么环境之类的废话就不多说了,一般的电脑都可以. ...