ASP.NET MVC (一)

时间:2022-09-17 22:17:36

工作清闲好一段时间了,趁这段时间弄了弄PHP,做个了简单的MVC网页。玩了玩Android,弄了个拨号器,发短信的,嘿嘿,最满意的还是两天弄了个数独游戏。不务正业一个多月了,也该磨磨刀,接下来一段时间,我会陆续整理ASP.NET MVC和大家分享。

ASP.NET MVC 不是个新技术,是2009年发布的一个ASP.NET Web应用程序框架。下面我们就从几个方面一起来回顾MVC。

1.  什么是MVC

   ASP.NET MVC Framework是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架.已于2009年3月19日正式发布. 
        MVC(Model-View-Controller)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller).

2. 创建MVC 项目

  如果你现在还在使用VS2008,需要下载 ASp.NET MVC Beta插件。如果你是中文版的可能按照会有些小问题。建议你使用Vs2010或2012。这里我使用VS2012演示。

选择  文件-- 新建 --- 项目  --- 确定 。

选择空模版,视图引擎 Razor。

ASP.NET MVC (一)

我们可以看到项目中有几个文件夹的命名和MVC(Model-View-Controller,模型—视图—控制器模式)是对应的。

3. MVC 项目的执行原理

在介绍MVC项目的执行远离前,先回顾 WebForm模式。

当从地址栏中输入地址  http://localhost:8088/home/index.aspx 查看页面,服务器会在根目录下寻找home文件夹下的index.aspx页面然后由 index.aspx.cs去进行一些业务处理,可能还需要去数据库中读取数据,(怎么经过 BLL,DAL此处butane),然后有index.aspx页面呈现给用户。

ASP.NET MVC (一)

简单来说就是客户端每访问一个路径,都会对应一个物理文件。

那MVC呢?

在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。

ASP.NET MVC (一)

在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。

4. 初试牛刀  --  MVC  小案例

4.1 新建控制器HomeController,注意这里必须以 Controller 结尾

ASP.NET MVC (一)

public class HomeController : Controller
{
public ActionResult Index()
{
//返回View给客户端,如果View不带参数,就是返回和Action同名的View
// 相当于 return View("Index");
return View();
}
}

HomeController : Controller

Index 在这里称为 HomeController 的Action,一个 Controoler 中可以有多个Action

4.2 创建 视图

在Index , Action 中右击选择添加视图,去掉使用模板页,单击确定。

此时会在View目录下创建于Controller同名的文件夹 Home,在该目录下创建

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<title>Index</title>
</head>
<body>
<div>
<h1>这是 /Views/Home/Index.cshtml 文件 </h1>
</div>
</body>
</html>

Index.cshtml

4.3 运行项目

ASP.NET MVC (一)

仔细查看URL路径,它是如何定位到 Index.cshtml文件呢?

5. URL 路由原理

查看 Global.asax.cs文件

public static void RegisterRoutes(RouteCollection routes)
{
//忽略对 .axd 文件的路由,向访问 webForm一样直接去访问 .axd文件
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//路由规则
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);
} protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); // 默认情况下对 Entity Framework 使用 LocalDB
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True"); RegisterGlobalFilters(GlobalFilters.Filters);
//程序启动时,定义Route规则
RegisterRoutes(RouteTable.Routes);
}

Globle

我们可以看到这里定义了一个名为"Default"的Route,还定义了默认的参数。默认参数的意义在于,当我们访问例如http://localhost:2176/的URL的时候,他会将不存在的参数用默认的参数补上,也就是相当于访问http://localhost:2176/Home/Index一样。 这也就解释了运行程序出现 index.cshtml页面。

我们知道了一个URL是怎样定位到相应的Controller中去的了,那么View又是怎么被返回给客户端的呢?我们从前面的看到,Controller中的Action方法中有个return View()的方法。默认情况下它会返回与Action同名的view.在ASP.NET MVC默认的视图引擎(WebFormViewEngine)下,view是按如下路径访问的:

/Views/{Controller}/{Action}.aspx

也就是说对于http://localhost:2176/Home/Index这个路径,在默认情况下,在Index这个Action中用return View()来返回view的时候,会去寻找/Views/Home/Index.aspx文件,如果找不到这个文件,就会去Share目录中寻找:/Views/Share/Index.aspx,如果都找不到,就会抛出找不到View的异常。return View("lulu.aspx")来指定要返回哪一个view:/Views/Home/lulu.aspx。

好了,我们现在看看直接访问 http://localhost:2176/View/Home/Index.cshtml 会出现什么情况呢?

ASP.NET MVC (一)

OH,404错误,聪明的你知道为什么吗?

ASP.NET MVC (一)的更多相关文章

  1. ASP&period;NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  2. 使用Visual Studio 2015 开发ASP&period;NET MVC 5 项目部署到Mono&sol;Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

  3. 一百元的智能家居——Asp&period;Net Mvc Api&plus;讯飞语音&plus;Android&plus;Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  4. Asp&period;net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合

    今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...

  5. ASP&period;NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  6. ASP&period;NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航

    ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...

  7. ASP&period;NET MVC开发:Web项目开发必备知识点

    最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...

  8. ASP&period;NET MVC原理

    仅此一文让你明白ASP.NET MVC原理   ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义HttpModule,用来解析Controller与 ...

  9. ASP&period;NET MVC——模型绑定

    这篇文章我们来讲讲模型绑定(Model Binding),其实在初步了解ASP.NET MVC之后,大家可能都会产生一个疑问,为什么URL片段最后会转换为例如int型或者其他类型的参数呢?这里就不得不 ...

  10. ASP&period;NET MVC 5 系列 学习笔记 目录 &lpar;持续更新&period;&period;&period;&rpar;

    前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

随机推荐

  1. EL操作 web 对象的常用方法

    11个常见的web对象 pageScope :获得pageContext对象中存的数据 requestScope :获得request对象中存的数据 sessionScope :获得session对象 ...

  2. &period;NET Framework 中的所有类型

    .NET Framework 中的所有类型不是值类型就是引用类型. 值类型是使用对象实际值来表示对象的数据类型. 如果向一个变量分配值类型的实例,则该变量将被赋以该值的全新副本. 引用类型是使用对对象 ...

  3. Quartz&period;net官方开发指南系列篇

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  4. &period;net dropdownlist 動態顯示,指定字段

    dropdownlist 動態顯示,指定字段 this.ddlPermission.Items.Clear(); ,new ListItem("請選擇","") ...

  5. Img垂直居中

    IMG垂直居中问题 2011-02-22 10:51:00|  分类: CSS |  标签:垂直居中  div  align  img  vertical  |举报|字号 订阅    转载来自:htt ...

  6. 根据设备width&lpar;375&rpar;动态设置font-size

    根据html的font-size使用rem来优化移动端页面 (function () { var w = window, d = document.documentElement, t; var re ...

  7. &lbrack;JLOI2014&rsqb;聪明的燕姿(搜索)

    城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁. 可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字 S, ...

  8. 【转】repo介绍

    Android 使用 Git 作为代码管理工具,开发了 Gerrit 进行代码审核以便更好的对代码进行集中式管理,还开发了 Repo 命令行工具,对 Git 部分命令封装,将百多个 Git 库有效的进 ...

  9. 修改无线wifi网络名称。注册表。windows 无线属性 windows 无线 配置文件

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha windows 无线属性 windows 无线 配置文件 ======= 修改完成,之后 ...

  10. lambda 表达式的由来

    相关技术点:函数指针.C#委托.匿名方法.lambda表达式 谈到lambda表达式,首先从委托讲起, 委托是持有一个或者多个方法的对象,这个特性有点像C中的函数指针,可以指向不同的方法,下面的例子是 ...