ASP.NET MVC 5 Web编程1 -- 入门
开篇引言
说起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 -- 入门的更多相关文章
- ASP.NET MVC 4 Web编程
http://spu.jd.com/11309606.html 第1章 入门第2章 控制器第3章 视图第4章 模型第5章 表单和HTML辅助方法第6章 数据注解和验证第7章 成员资格.授权和安全性第8 ...
- ASP.NET MVC 5 Web编程4 -- Razor视图引擎
Razor简介 Razor是ASP.NET新增的一个视图引擎,由微软全球最年轻的副总裁,有着"ASP.NET之父"称呼的Scott Guthrie主导的团队开发. 主导Razor开 ...
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...
- ASP.NET MVC 5 Web编程5 -- 页面传值的方式
本篇文章将讲述MVC的页面传值方式,具体包括:后端向前端传值(Controller向View传值):前端向后端传值(View向Controller传值):Action与Action之间的传值. 回顾 ...
- ASP.NET MVC 5 Web编程3 -- Controller的应用及扩展
Controller基础 一. 访问修饰符 1.1 类的访问修饰符 Controller类的访问修饰符必须是public,url才能被拦截. internal能编译通过,但无法拦截url请求.priv ...
- MVC 5 Web编程2 -- URL映射
ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...
- ASP.NET MVC 4高级编程(第4版)
<ASP.NET MVC 4高级编程(第4版)> 基本信息 作者: (美)Jon Galloway Phil Haack Brad Wilson K. Scott All ...
- 【译】ASP.NET MVC 5 教程 - 1:入门
原文:[译]ASP.NET MVC 5 教程 - 1:入门 本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识.本主题还附带了一 ...
- 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 ...
随机推荐
- 解决C# WinForm Graphics绘制闪烁问题
不直接使用form的CreateGraphics创建Graphics进行绘制,可以先在Form上面放一个需要大小的PictureBox,再创建一个同大小的Bitmap,将这个Bitmap设置为Pict ...
- Linux学习笔记(12)-进程间通信|匿名管道
Linux的进程间通信有几种方式,包括,管道,信号,信号灯,共享内存,消息队列和套接字等-- 现在一个个的开始学习! ----------------------------------------- ...
- 【转】TCP协议
TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一 ...
- servlet jsp jdbc bootstrarp mvc分层模式实现的第一个项目
登录注册界面 这是一个注册和登录的界面 用到了前端页面中自带的一点H5的标签和属性---巩固下 邮箱格式 :type="email" 不能为空: required=" ...
- IOS UIAppLocation 单例模式
UIApplocation * app=[UIApplocation shareapplocation]; UIAppLocation 只能被初始化一次. 一个程序中只能被创建一次,称为单例模式. 单 ...
- [VijosP1639]机密文件 题解
题目大意: m个人抄n份资料,资料有编号,每人抄连续的几份资料,每份资料页数不一定相等,每个人抄的速度相同,求使得总时间最少的方案(总时间相同,越前面的人抄的越少) 思路: 假设每人一天抄一页,二分天 ...
- jQuery Ajax请求(关于火狐下SyntaxError: missing ] after element list ajax返回json,var json = eval("("+data+")"); 报错)
$.ajax({ contentType: "application/x-www-form-urlencoded;charset=UTF-8" , type: &quo ...
- 导入数据经常使用的SQL语句整理整理
1.事务(基本) GO BEGIN TRY BEGIN TRAN -- 导入数据 COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN END CATCH GO ...
- bzoj3680模拟退火
看题意就是一道数学物理题,带权费马点 --这怎么是数学了,这也是物理的 所以要用物理方法,比如FFF 国际著名oi选手miaom曾说 模拟退火初温可以低,但是最好烧个几千次 国际著名物理课代表+1 ...
- python实现简单爬虫功能
在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...