初学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. Activity中的setContentView(R.layout.xxx)源码分析

    点进去会看到下图: 其中getWindow()是获取到Window类的唯一子类PhoneWindow的对象 找到PhoneWindow的setContentView()方法点进去: 1 @Overri ...

  2. Java开发准备

    1.Java是一门面向对象的高级语言 JDK:是java development kit的缩写,意思是java程序开发的工具包. 可以用来开发Java和运行Java程序 JRE:Java Runtim ...

  3. 基于SqlSugar的开发框架循序渐进介绍(28)-- 快速构建系统参数管理界面

    在参照一些行业系统软件的时候,发现一个做的挺不错的系统功能-系统参数管理,相当于把任何一个基础的系统参数碎片化进行管理,每次可以读取一个值进行管理,这样有利于我们快速的处理业务需求,是一个挺好的功能. ...

  4. java无效发源版本xx

    这三个地方统一一下 就可以解决了

  5. 2022-11-13:以下go语言代码中,如何获取结构体列表以及结构体内的指针方法列表?以下代码应该返回{“S1“:[“M1“,“M2“],“S2“:[],“S3“:[“M1“,“M3“]},顺序不限

    2022-11-13:以下go语言代码中,如何获取结构体列表以及结构体内的指针方法列表?以下代码应该返回{"S1":["M1","M2"], ...

  6. 2020-08-21:网络IO模型有哪些?

    福哥答案2020-08-21: 福哥口诀法:阻非复信异(阻塞.非阻塞.多路复用.信号驱动.异步) [知乎答案](https://www.zhihu.com/question/416128059)操作系 ...

  7. 2020-12-10:i++是原子操作吗?为什么?

    福哥答案2020-12-10: 不是原子操作.i++分为三个阶段:1.内存到寄存器.2.寄存器自增.3.写回内存.这三个阶段中间都可以被中断分离开.***[评论](https://user.qzone ...

  8. 2022-04-03:k8s安装srs,yaml如何写?

    2022-04-03:k8s安装srs,yaml如何写? 答案2022-04-03: yaml如下: apiVersion: apps/v1 kind: Deployment metadata: la ...

  9. 牧云 • 主机管理助手|正式开放应用市场,梦幻联动雷池WAF等多款开源软件

    0x00 前言 上个月,我司长亭开源了雷池WAF,不到三天就吸引了超过上千个师傅使用,几个交流群里,师傅们讨论的热火朝天,其中两个话题引起了我们牧云 • 主机管理助手 ( Collie ) 团队的关注 ...

  10. django的部署在centos

    虚拟环境 #virtualenv是一个创建独立python环境的工具 sudo pip install virtualenv #virtualenvwrapper将所有的虚拟环境统一管理,留意安装路径 ...