《精通 ASP.NET MVC 4》----2.2 创建ASP.NET MVC新项目

简介: 从在Visual Studio中创建一个新的MVC项目开始。在“File(文件)”菜单中选择“New(新建)”→“Project(项目)”,打开“New Project(新项目)”对话框。如果在“Visual C#”选项组中选择“Web”模板,会看到一个可用的项目类型“ASP.

本节书摘来自异步社区《精通 ASP.NET MVC 4》一书中的第2章,第2.2节,作者: 【美】Adam Freeman ,译者: 李萍 , 徐燕萍 , 林逸 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 创建ASP.NET MVC新项目

精通 ASP.NET MVC 4
从在Visual Studio中创建一个新的MVC项目开始。在“File(文件)”菜单中选择“New(新建)”→“Project(项目)”,打开“New Project(新项目)”对话框。如果在“Visual C#”选项组中选择“Web”模板,会看到一个可用的项目类型“ASP.NET MVC 4 Web应用程序”,选择该项目类型,如图2-1所示。

注意:Visual Studio 2012包括了对MVC 3以及MVC 4的支持,因此读者可以在新模板的旁边看到旧版本的可用模板。在创建新项目时,要小心选择正确的模板。
将这个新项目的名称设置为PartyInvites,点击“OK(确定)”按钮,将看到另一个对话框,如图2-2所示。它要求用户在三个不同类型的MVC项目模板之间进行选择。


ead8d284782843b26f84805f88923f6944376733

不同的MVC项目模板所创建的项目带有不同程序的支持特性,例如认证、导航及视觉样式等。对于本章而言,只是打算保持事情简单,故选择“Empty(空模板)”选项,创建一个带有基本文件夹结构的项目,但没有创建MVC应用程序所需要的任何文件。随着本书的进展和进一步解释,后面将逐步添加必要的文件。

点击“OK(确定)”按钮,创建这个新项目。

注:在图2-2中有一个下拉菜单,可以指定该项目的视图引擎。微软随MVC 3引入了一个新型的、叫作Razor的改进视图引擎。本书将使用这个Razor,建议读者也这么做,但如果想使用旧版的ASP.NET视图引擎(称为ASPX引擎),也可以在这里选择。本书将在第5章和第18章解释Razor,以及视图引擎所做的事情。
一旦Visual Studio创建了这个项目,便可以看到在“Solution Explorer(解决方案资源管理器)”窗口中显示了一些文件和文件夹,这是MVC 4项目默认的结构。现在,通过选择“Debug(调试)”菜单中的“StartDebugging(开始调试)”(或简单地按快捷键F5——译者注),试着运行一下这个应用程序(如果提示“Enable Debugging(启用调试)”,点击“OK(确定)”按钮,将会看到图2-3所示的结果。因为本例是从Empty项目模板开始的,此应用程序尚未包含任何可以运行的东西,因此会看到一个“404 —未找到”的错误屏幕。

做完上述操作之后,要确保停止调试,这可以关闭显示错误消息的浏览器窗口或返回Visual Studio,在“Debug(调试)”菜单上选择“Stop Debugging(停止调试)”(或简单地按快捷键Shift + F5——译者注)。

Visual Studio会打开浏览器来显示项目,通过图2-4所示的工具栏菜单,读者可以修改所使用的浏览器。可以看到,已经安装了微软的Internet Explorer和Google的Chrome。


4d7a3d038f7cb09d11353c33d60fa37c58ac41b1

本书将使用Internet Explorer 10。所有现代Web浏览器都不错,但本书坚持使用IE,因为它是被广泛安装的。

2.2.1 添加第一个控制器

在MVC体系架构中,传入的请求是由控制器(Controller)处理的。在ASP.NET MVC中,控制器只是简单的C#类(通常继承于System.Web.Mvc.Controller,这是框架内建的控制器基类)。在控制器中的每一个public方法都称为一个动作方法(Action Method),即可以用某个URL通过Web来调用它,以执行一个动作。MVC约定,把控制器都放在一个名为Controllers的文件夹中,这是Visual Studio在建立项目时为用户自动创建的。虽然不一定要遵循这一约定或其他大多数MVC约定,但建议读者还是遵循它(现在的编程方式提倡“约定优于配置”,这可以省去编程过程中很多琐碎的事情。因此,在可能的情况下,应当优先遵循约定——译者注)——至少因为它有助于读者弄清本书示例的意思。

为了对项目添加一个控制器,在Visual Studio的“Solution Explorer(解决方案资源管理器)”窗口中右击“Controllers”文件夹,从弹出菜单中选择“Add(添加)”→“Controller(控制器)”,如图2-5所示。


7e78bb5a1059931d9c87df7d2c59fde4e4bc55f6

当“Add Controller(添加控制器)”对话框出现时,将其命名为“HomeController”,如图3-5所示。这是另一个约定:对控制器的命名应当是有含义的,并以“Controller”结尾。

这个对话框的“Scaffolding options(支架选项)”部分,让人们能够使用带有常规功能的模板来创建控制器。这里暂不打算使用这一特性,因此,确保在“Template(模板)”下拉菜单中选择了“Empty MVC controller(空的MVC控制器)”条目,如图2-6所示。


1dd9edf06b91125504ec47be6d169cf74061177d

点击“Add(添加)”按钮,创建这个控制器。Visual Studio会在Controllers文件夹中创建一个新的C#代码文件,其名称为“HomeController.cs”,打开它以便编辑。清单2-1已经列出了Visual Studio放入这个类文件中的默认内容。可以看到,这个类的名称为“HomeController”,而且它派生于System.Web.Mvc.Controller。

清单2-1 HomeController类的默认内容

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;    
using System.Web.Mvc;
namespace PartyInvites.Controllers {
    public class HomeController : Controller {
        public ActionResult Index() {
            return View();
        }
    }
}

MVC的一个良好开端是对该控制器类做一些简单修改。编辑HomeController.cs文件中的代码,使之与清单2-2吻合——本书已高亮了这些修改,以使它们易于看到。

清单2-2 修改HomeController类

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”。通过选择Visual Studio的“Debug(调试)”菜单中的“StartDebugging(开始调试)”,再次运行这个项目,浏览器将显示这个Index动作方法的结果,如图2-7所示。


7bb7c652db6ed20a95432e52823e8f19941ec744

2.2.2 理解路由

除模型、视图、控制器之外,MVC应用程序也使用ASP.NET的路由系统(Routing System),它决定了如何把URL映射到特定的控制器和动作上。当Visual Studio创建MVC项目时,它添加了一些默认的路由,以使系统能够开始工作。读者可以请求以下任何一个URL,它们都将被引向HomeController上的Index动作。

/

/Home

/Home/Index

因此,当浏览器请求http://<你的网站>/,或http://<你的网站>/Home时,将得到HomeController中Index方法的输出结果。通过在浏览器中改变URL,读者可以自己试一试。此时,URL是http://localhost:61982/ (端口部分可能不同)。如果对此URL添加/Home、或/Home/Index,并按Enter键,看到的将是该MVC应用程序的同样结果“Hello World”。

这是受益于遵循MVC约定的一个很好的例子。在这个例子中,这种约定是:有一个名为“HomeController”的控制器,并且,它是MVC应用程序的起点(渲染首页的默认控制器——译者注)。Visual Studio为一个新项目创建的默认路由——假设遵循了这一约定。因为确实遵循了这个约定(指前面的操作过程中,遵循了控制器的命名约定和Index动作方法的命名约定——译者注),所以获得了对前面所列出的URL的支持。

如果不遵循这种约定,就需要修改路由,以指向所创建的控制器。对于这个简单例子,默认配置就是本书所需要的。

提示:可以打开Global.asax.cs文件来查看和编辑路由配置。在第7章中,本书将建立自定义路由条目,而在第13章和第14章中,读者将了解更多关于路由能做什么的内容。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
42 0
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
65 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
100 5
|
3月前
|
开发框架 安全 搜索推荐
分享105个NET源码ASP源码,总有一款适合您
分享105个NET源码ASP源码,总有一款适合您
28 4
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
52 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
117 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
67 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
113 0
|
9月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
144 0