开篇引言

说起ASP.NET MVC,我想作为WebForms开发者第一点要问的是:为什么要使用它?我的理解是:MVC是更细节化的框架,“细节可控”意味着你的系统更精致。具体体现在应用上。MVC的出现,可能正是迎合Web开发越来越精致的需求。就我了解的一个大型投资管理电商平台,所用的架构就是ASP.NET MVC。MVC将来在系统应用的趋势,很可能就是大型电子商务平台。当然,WebForms并不是被“抛弃”,在快速开发,控件复用上,WebForms依然走在前面。有时候,根据需要,我们可以在同一项目中,混合使用这两种技术。

环境准备:Windows 7 sp1或以上操作系统 + IE10或以上浏览器 + Visual Studio 2013

Demo创建及目录文件介绍

1. 打开VS2013,新建一个MVC5项目。

确定,选择MVC模板。

默认生成的项目目录结构如下

目录文件说明:

目录或文件 内容
App_Data 存放数据文件
App_Start 包含4个类文件,分别是绑定配置,过滤配置,路由配置,开始(验证)配置。
Content 包含3个CSS文件,注意除了site.css外,亮点是默认集成了在国外非常流行的、Twitter使用的Bootstrap CSS/HTML框架。
Controllers 控制器,包含两个类文件,分别表示两个控制器。有关“控制器”更多信息请关注本系列后续文章。
fonts 字体
Models 两个模型(实体)类
Scripts js文件夹,包含bootstrap.js和jquery-1.10.2.js等。
Views 视图,即页面文件夹。包含.cshtml文件。有关cshtml,后续会做详细介绍。
Global.asax 系统入口
packages.config 重要,记录系统中关键技术框架的版本信息。

MVC的运行原理

在多数的Web框架(asp,asp.net form,jsp,php,...)中,URL地址通常映射到磁盘上的具体物理文件,例如,/HelloWord/welcome.php 或 /HelloWod/welcome.aspx ,通常在磁盘上都有一个welcome.php或welcome.aspx文件与之相对应。当一个针对Web应用程序的http请求发送到服务器时,Web框架将请求的处理权交由请求的文件,通常这个文件通过使用HTML标记来生成发送到客户端的回应内容。可以把此过程理解为“文件式请求”。

MVC怎么做的呢?

MVC框架使用另一种不同的方式将URL路径直接映射到服务器端的代码,也就是将URL直接映射到类而不是映射到物理文件。这些被映射到的类被称为“控制器类”,他们可以处理服务器请求,处理用户输入和与用户进行交互,执行应用逻辑和数据逻辑等。控制类将会调用一个独立的“视图”组件来产生针对请求的HTML输出。可以把此过程理解为“控制器式请求”。

下面用一张图解释“控制器式请求”:

现在我们可以做个试验,验证下“控制器式请求”。在Controllers文件夹单击鼠标右键,新建一个Controller

选择MVC5控制器

我们将这个新建的Controller命名为HelloWorldController,并将默认代码改为(很简单,各位可以自己写^_^):

然后重建项目。运行,在浏览器中,在站点地址(我这里是http://localhost:55952,你的端口可能会不同)后+/helloworld,效果如下:

同样,在站点地址后+/helloworld/welcome,效果如下:

通过这个简单的示例,我想你已理解并对“控制器式请求”有了初步印象。(第一个输入地址,没有加index方法名也能访问,是因为index方法是默认入口。)

事实上,上面这个访问规则能映射到相应的控制器类和类中的方法,是在App_Start文件夹下RouteConfig.cs文件中定义的。这个类只有一个方法

        public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

此方法定义了映射规则和可以忽略的路由(也叫可以忽略的访问地址类型)。

有关URL映射的详细内容,我们将在下一章做深入阐述。

总结

本章主要对ASP.NET MVC5 做一个入门级的介绍,并对MVC的运行原理做了初步探讨和验证。希望这会对还未接触MVC的童鞋有帮助。本章作为系列开篇,也将对接下来的文章内容做一个系列探讨。

另外,也不忘将先辈们的一句话送给大家:如果你对MVC不感兴趣,没关系的,这完全是一个“可选”项。要知道,MVC和WebForms是共存的。

最后,

如果您对MVC5感兴趣,请持续关注。作者非常希望您能“推荐”一下,并祝工作顺利。

本文原文链接 http://www.cnblogs.com/hangwei/p/4255676.html

ASP.NET MVC 5 Web编程1 -- 入门的更多相关文章

  1. ASP.NET MVC 4 Web编程

    http://spu.jd.com/11309606.html 第1章 入门第2章 控制器第3章 视图第4章 模型第5章 表单和HTML辅助方法第6章 数据注解和验证第7章 成员资格.授权和安全性第8 ...

  2. ASP.NET MVC 5 Web编程4 -- Razor视图引擎

    Razor简介 Razor是ASP.NET新增的一个视图引擎,由微软全球最年轻的副总裁,有着"ASP.NET之父"称呼的Scott Guthrie主导的团队开发. 主导Razor开 ...

  3. ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)

    本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...

  4. ASP.NET MVC 5 Web编程5 -- 页面传值的方式

    本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...

  5. ASP.NET MVC 5 Web编程3 -- Controller的应用及扩展

    Controller基础 一. 访问修饰符 1.1 类的访问修饰符 Controller类的访问修饰符必须是public,url才能被拦截. internal能编译通过,但无法拦截url请求.priv ...

  6. MVC 5 Web编程2 -- URL映射

    ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...

  7. ASP.NET MVC 4高级编程(第4版)

    <ASP.NET MVC 4高级编程(第4版)> 基本信息 作者: (美)Jon Galloway    Phil Haack    Brad Wilson    K. Scott All ...

  8. 【译】ASP.NET MVC 5 教程 - 1:入门

    原文:[译]ASP.NET MVC 5 教程 - 1:入门 本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识.本主题还附带了一 ...

  9. vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板)

    vs 2013下自定义ASP.net MVC 5/Web API 2  模板(T4 视图模板/控制器模板): Customizing ASP.NET MVC 5/Web API 2 Scaffoldi ...

随机推荐

  1. fatal error LNK1169: 找到一个或多个多重定义的符号

    申明全局变量,全局函数一定要在cpp中申明,其他类引用该全局变量就include该cpp的h文件,然后extern一下就好了.否则容易出现该重复定义错误. 这个"容易"是如何解释的 ...

  2. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  3. racket

    let 和 let* 区别 ``` racket // 这是对的 (let* ([x (random 4)][o (random 4)] [diff (number->string (abs ( ...

  4. spin.js

    $ajax提交,菊花加载的方式和位置: $.ajax({ type: "get", url: "http://www.xxx.com/test.html", b ...

  5. Java基础知识点4:继承

    继承是面向对象编程技术中非常重要的一个基本概念.它背后的基本思想就是:通过已有的类来创建一个新的类,这个新的类可以重用(或继承)已有的类方法:新的类也可以加入新的方法和属性. 在这里我们通过一个实例来 ...

  6. Web API返回JSON数据

    对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Conten ...

  7. java function retry wrapper

    import java.util.concurrent.Callable; /** * Created by huahui.yang on 1/29/16. */ public class Retry ...

  8. 2016-2017 ACM-ICPC Asia-Bangkok Regional Contest

    A. WSI Extreme 将人按洗澡时间从大到小排序,那么$ans=\sum_{i=1}^{n}a_i\times\lfloor\frac{i+W-1}{W}\rfloor$. 当$W$比较大时, ...

  9. 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world

    2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...

  10. SPOJ FASTFLOW网络流水题

    Dinic=bfs+dfs  = = 用bfs算出到原点的最短路径(每条残存都算1) 然后每次都跑两端只差1的路径跑dfs,并且一直跑到不能跑 一个优化:如果一个点流出的量已经到流入量了就可以返回上一 ...