zoukankan      html  css  js  c++  java
  • .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的规则。

  • 相关阅读:
    JAVA中拼音工具类
    USB接口不同颜色的作用
    java的反射机制使用方法
    利用FrameLayout+LinearLayout实现Android底部导航栏切换
    Andorid中如何读取文件
    JAVA中解压压缩包到制定文件夹工具方法
    Andorid中子线程更新主线程方法
    委托的定义使用
    Json的序列化和反序列化
    在线支付(模拟支付宝)
  • 原文地址:https://www.cnblogs.com/brown-birds/p/The_MVC_Pattern.html
Copyright © 2011-2022 走看看