初学ASP.NET MVC,通过博客来记录自己的学习笔记!


创建一个新的 ASP.NET MVC 项目

新建项目中选择 ASP.NET MVC4 Web Application,项目类型为,视图引擎为Razor。

  • 在visual studio 2012 中即支持MVC4,也同样支持MVC3,因此我们可以看到就得模板在新的版本中同样适用。当我们创建一个新的项目的时候,一定要选择正确的项目类型。
  • 我们可以在一个下拉列表中选择项目的视图引擎。在MVC3模板中,微软引进了一种新的视图引擎叫做Razor,在以后的项目中都是使用的Razor这种视图引擎,我希望你也是这样,但是如果你继续希望使用ASP.NET视图引擎(同时称为ASPX引擎),我们可以在这个地方进行选择。在以后的章节中我们将会讲解Razor引擎好人视图引擎的作用。

第一次在Visual Studio中创建MVC项目时,在解决方案管理器中我们将会看到一些文件和文件夹,这是MVC4项目的默认结构。我们可以尝试运行这个项目,我们可以看到一个404 Not Found 错误,因为我们运行了一个空的项目模板,这个程序没有包含任何可以运行的程序。

Visual Studio可以打开浏览器运行我们的项目,同时我们也可以通过工具栏菜单来改变打开的浏览器。在以后的项目中,我们将会使用Internet Explorer 10浏览器,现在所有的浏览器都是非常好的,但是我们继续使用IE,因为它是安装用户最多的浏览器。


增加第一个控制器(Controller)

在MVC架构中,用户的请求通过Controller来处理,在ASP.NET MVC中,控制器就是C#类(通常继承于 System.Mvc.Controller,这个框架在控制器的基础类中创建)。控制器中的每一个public类型的方法都被称作action method,以为这我们通过一些URL来执行其中的一个方法。MVC的规则(convention)是把所有的控制器类放在一个名叫Controllers的文件夹中,这个文件夹是在我们创建这个项目的时候Visual Studio自动为我们创建好的。

为了为我们的项目创建一个控制器,在解决方案管理器中右击Controllers文件夹,在弹出的菜单中选择Add/Controller菜单。

在弹出的Add Controller窗口中输入HomeController。这是另外一个规则:控制器的名字应该分为两部门,第一部分为该控制器的描述,第二部门为Controller,也就是说,控制器的名字应该以Controller结尾。窗口中的Scaffolding options可以让我们使用公共函数的模板来创建一个控制器。现在我们不使用这个功能,因此在Template这个菜单中要确保选择的是Empty MVC controller这一项。点击Add按钮来创建一个新的控制器。

Visual Studio将会在Controllers文件夹下创建一个叫做HomeController的C#代码文件并且已经打开,默认代码如下所示,我们可以看到这个类的名字叫做HomeController并且该类继承于 System.Web.Controller.

       The default contents of the HomeController class 

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.Mvc;
6
7 namespace PartyInvites.Controllers
8 {
9 public class HomeController : Controller
10 {
11 public ActionResult Index()
12 {
13 return View();
14 }
15 }
16 }

初学MVC时一个很好的方法就是修改控制器类中的一些代码。修改HomeController.cs文件中的代码,修改后的代码如下所示:

Modifying the HomeController Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace PartyInvites.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Hello World";
}
}
}

我们修改了名为Index的方法,让它返回一个“Hello World”的字符串。重新运行这个项目,浏览器中将会显示Index方法的结果,如下图所示。


理解路由

除了models,views和controllers外,MVC应用程序也使用ASP.NET的路由系统,这个路由系统决定了URLs如何路由到特定的控制器和特定的方法。当Visual Studio创建一个MVC项目,它将添加一些默认的路由让我们运行项目。我们可以用下面URL中的任意一个都将指向HomeController的Index方法:

    • /
    • /Home
    • /Home/Index

也就是说,当我们在浏览器中输入的地址为http://yoursit/或者http://yoursite/Home时,它们返回的输出都来自于HomeController的Index方法。我们可以在自己的浏览器中输入不同的URL进行验证。同时,也可以是http://localhost:6130/,其中端口的部分可能不同。如果后面加上/Home或者/Home/Index并且点击返回,我们同样可以看到来自于MVC程序的“Hello World”。

这就是我们根据MVC的惯例做出的一个很好的事例。既然这样,这个惯例就是:我们要创建一个名字为HomeController的控制器,它将成为MVC程序的启动项。我们用Visual Studio创建项目时,默认的路由设置就是根据这个惯例来创建的。由于我们按照根据这个惯例,我们得到了支持上述列表中的URLs。

如果我们不遵循这个惯例,我们可以修改路由设置为我们所创建的控制器。在这个简单的示例中,我们使用的都是默认的配置。

提示:我们可以在Global.asax.cs文件中设置我们的路由信息。


---<本节完>---


ASP.NET MVC4 学习笔记-1的更多相关文章

  1. asp.net mvc4 学习笔记一(基本原理)

    做了8年的asp.net webform,用过MVVM但还没用过MVC , 虽然项目不用MVC,但是还是想了解一下,今天第二天学习,以下是学习心得. VS2012默认带有asp.net mvc3和as ...

  2. ASP.NET MVC4学习笔记路由系统概念与应用篇

    一.概念 1.路由是计算机网络中的一个技术概念,表示把数据包从一个网段转发至另一网段.ASP.NET中的路由系统作用类似,其作用是把请求Url映射到相应的"资源"上,资源可以是一段 ...

  3. ASP.NET MVC4学习笔记之总体概述

    断断续续使用ASP.NET MVC框架也有一年多了,也算积累了一些经验,唉,一直想写一些笔记好好总结一下,人太懒不想动笔,今天终于决定开始.希望自己能坚持下去. 这篇文章大体介绍ASP.NET MVC ...

  4. ASP.NET MVC4学习笔记之Controller的激活

    一. 高层相关类说明 当路由系统根据请求Url收集路由信息后,下一步就要将路由信息传给Controller激活系统,Controller激活系统负责实现了IController接口的Controlle ...

  5. ASP.NET MVC4学习笔记路由系统实现

    一.路由实现 路由系统实际是一个实现了ASP.NET IHttpModule接口的模块,通过注册HttpApplication的PostResolveRequestCache 事件对Url路由处理.总 ...

  6. ASP.NET MVC4学习笔记

    一.MVC简介

  7. ASP.NET MVC4学习笔记之Controller激活的扩展

    一. 为什么要进行扩展 在前面的分析中,我们知道默认的Controller激活系统只能实例化无参构造函数的Controller类型,但在某些情况一下,我们希望某些服务的实例能够自动注入到Control ...

  8. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  9. [ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载、ID型别差异

    [ASP.NET MVC] ASP.NET Identity学习笔记 - 原始码下载.ID型别差异 原始码下载 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授 ...

  10. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

随机推荐

  1. 前端获取后端设置的自定义头,前端获取不到后端设置的response headers

    需要后端设置 Access-Control-Expose-Headers 例如:后端在返回头中设置 user-name: 张三 但是前端直接response.headers['user-name']是 ...

  2. 音频处理库性能对比:计算mel频谱的速度哪个更快?

    介绍 音频信号处理在各种应用中都发挥着重要的作用,如语音识别.音乐信息检索.语音合成等.其中,Mel频谱是一种常用的频域特征表示方法,用于描述人类听觉系统对频率的敏感程度. 在深度学习音频领域,mel ...

  3. Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)

    缘起 今年(2023年) 2月的时候做了个适配Amazon S3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手 ...

  4. Godot报错 Node not found: "SubViewport"[一问随笔]

    问题: 使用TextureRect显示SubViewport的内容,结果发生了如下报错 E 0:00:01:0007 get_node: Node not found: "SubViewpo ...

  5. [Pytorch框架] 5.1 kaggle介绍

    文章目录 5.1 kaggle介绍 5.1.1 Kaggle 平台简介 比赛介绍 5.1.2 Kaggle板块介绍 Data Rules Team Kernels Discussion Leaderb ...

  6. [C++核心编程] 4.1、类和对象-封装

    文章目录 4 类和对象 4.1 封装 4.1.1 封装的意义 4.1.2 struct和class区别 4.1.3 成员属性设置为私有 4 类和对象 C++面向对象的三大特性为:封装.继承.多态 C+ ...

  7. 驱动开发:通过MDL映射实现多次通信

    在前几篇文章中LyShark通过多种方式实现了驱动程序与应用层之间的通信,这其中就包括了通过运用SystemBuf缓冲区通信,运用ReadFile读写通信,运用PIPE管道通信,以及运用ASYNC反向 ...

  8. sqlilabs第一关

    首先打开网页,进行注入点的测试 输入?id=1 and 1=1发现1=2的时候没有进行报错,有两种可能,一种是不能注入,第二种是字符型可以通过对字符型里面的''进行闭合,输入'and 1=1--+发现 ...

  9. map和multimap

    map相对于set区别,map具有键值和实值,所有元素根据键值自动排序,pair的第一个值被称为键值key,pair的第二个值被称为实值value.map也是以红黑树为底层实现机制,根据key进行排序 ...

  10. 【Python基础】字典的基本使用

    字典是由一系列键值对组成的无序集合.每个键值对包含一个键和一个对应的值.键必须是不可变的,如字符串.数字或元组.值可以是任意类型的对象.字典可以使用花括号({})或者内置函数dict()来创建. di ...