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

简介: 本节打算从Visual Studio中创建新的MVC框架项目开始。在“File(文件)”菜单中选择“New(新建)”→“Project(项目)”,打开“New Project(新项目)”对话框。如果在左侧“Visual C#”目录树中选择“Web”模板,会看到“ASP.NET Web Application(ASP.NET Web应用程序)”项目模板。

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

2.2 创建新的ASP.NET MVC项目

本节打算从Visual Studio中创建新的MVC框架项目开始。在“File(文件)”菜单中选择“New(新建)”→“Project(项目)”,打开“New Project(新项目)”对话框。如果在左侧“Visual C#”目录树中选择“Web”模板,会看到“ASP.NET Web Application(ASP.NET Web应用程序)”项目模板。选择该项目类型,如图2-1所示。

将该新项目的名称设置为PartyInvites,单击“OK(确定)”按钮并继续,此时会看到另一个对话框,如图2-2所示。这是微软项目的初始设置部分,以便将ASP.NET的不同部分整合成一组统一的工具和模板。

提示:
请确认在对话框(图2-1)的顶部选择的是.NET Framework 4.5.1。这是.NET的最新版本,是本书描述的一些高级特性所必需的。


efd3ca8f6b673b8e625f0fa39eb64da55c20e565

该模板创建的项目带有不同的起点和特性配置,如认证、导航以及视觉主题等。为保持事情简单,选择“Empty(空模板)”选项,并在“Add folders and core references for(添加文件夹和核心引用)”部分勾选“MVC”复选框,如图2-2所示。这会创建一个基本的MVC项目,它带有最少的预定义内容,这也是本书用于所有示例的起点。

注:
其他模板选项意在为ASP.NET项目提供更为完整的起点。但笔者不喜欢这些模板,因为它们鼓励开发者将一些重要特性视为黑箱进行操作。本书的目标是为你提供知识并融合MVC应用程序的各个方面,因而本书所有示例使用的几乎是这个“Empty”模板。
一旦Visual Studio创建了项目,便会看到“Solution Explorer(解决方案资源管理器)”窗口中显示了一些文件和文件夹,如图2-3所示。这是一个新的MVC项目默认的项目结构,稍后便会理解Visual Studio所创建的这些文件和文件夹各自的用途。


a03dc7ab676addce2b458c62bc9d6ff9acaea94d

现在,通过选择“Debug(调试)”菜单中的“Start Debugging(开始调试)”(或简单地按快捷键F5),便可以试着运行这个应用程序(如果提示“Enable Debugging(启用调试)”,请单击“OK(确定)”按钮即可)。这时,将会看到如图2-4所示的结果。由于本例是从Empty项目模板开始的,该应用程序尚未包含任何可以运行的内容,因此服务器会产生一个“404—未找到”的错误。

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

正如你所看到的,Visual Studio会打开浏览器来显示该项目。当然,默认的浏览器是Internet Explorer,但通过图2-5所示的工具栏,也可以选择已安装的任何浏览器。正如该图显示的,笔者已安装了一系列浏览器,并发现它们在开发期间对测试Web应用程序是很有用的。


688b5c95b92d190b107590bfd1ff9e222b8dee3e

本书将使用Internet Explorer 11,因为笔者知道IE浏览器是被广泛安装的。Internet Explorer使用了快速而宽松的Web标准,但最近的版本已经能很好地实现HTML 5标准。Google Chrome也是很好的开发选择,而且笔者倾向于在自己的项目中使用它。

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-6所示。


5b58f94a51a0ca441a998e876e1119e9386a3f34

“Add Scaffold(添加支架)”对话框出现后,选择“MVC 5 Controller–Empty(MVC 5-空控制器)”选项,如图2-7所示,然后单击“Add(添加)”按钮。


642896a1903a8509028605f1cbf028350f02aa0e

这将打开“Add Controller(添加控制器)”对话框,将其名称设置为“HomeController”,然后单击“Add(添加)”按钮。控制器名称有几个约定:提供的控制器名称应当指明其目的;默认的控制器名称称为“Home”;控制器名称具有“Controller”后缀。

提示:
如果曾使用Visual Studio的早期版本创建过MVC应用程序,便会注意到上述过程稍有不同。微软公司已经改变了Visual Studio用预配置类和其他条目组装项目的方式。
Visual Studio会在Controllers文件夹中创建一个新的C#文件,其名称为“HomeController.cs”,并打开它,以供编辑。清单2-1列出了Visual Studio放入这个类文件的默认内容。可以看出,这个类称为“HomeController”,它派生于Controller类,可以在System.Web.Mvc命名空间中找到、看到这个类。

清单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(调试)”菜单中的“Start Debugging(开始调试)”,再次运行该项目。浏览器将显示Index动作方法的结果,如图2-8所示。


709822317526c7b3b8990bc92734ca490c19ad39

提示:
请注意,Visual Studio已经将浏览器定向到了37782端口。你的浏览器请求这一URL时,看到的肯定是一个不同的商品号,因为Visual Studio在创建项目时会分配一个随机的端口。如果查看Windows任务栏的通知区,会发现一个IIS Express图标。这是Visual Studio附带的一个精简版的全功能IIS应用程序服务器,用于开发期间递交ASP.NET的内容和服务。第13章将展示如何将MVC项目部署到产品环境。

2.2.2 理解路由

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

/
/Home
/Home/Index

因此,当浏览器请求http://< 你的网站 >/,或http://< 你的网站 >/Home时,会得到HomeControllerIndex方法的输出内容,可以在浏览器中修改URL,自己试一试。图2-8所示的URL是http://localhost:37782/ (端口部分可能不同)。 如果对此URL添加 /Home或/Home/Index ,并按Enter键,看到的将是该MVC应用程序的同样结果“Hello World”

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

如果不遵循这种约定,则需要修改路由,以指向所创建的替代控制器。对于这个简单示例,应用默认配置就行了。

提示:
这里可以打开App_Start文件夹中的RouteConfig.cs文件来查看和编辑路由配置。第16章和第17章将解释这个文件中的条目。

相关文章
|
2月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
29 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET WEB——项目创建与文件上传操作
ASP.NET WEB——项目创建与文件上传操作
46 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 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>(); //
60 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,然后在重定向到另
95 5
|
2月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
32 0
|
3月前
|
开发框架 安全 搜索推荐
分享105个NET源码ASP源码,总有一款适合您
分享105个NET源码ASP源码,总有一款适合您
27 4
|
3月前
|
前端开发 JavaScript Java
springboot 出现 Cannot resolve MVC View ‘index‘ 问题解决办法,前后端不分离项目前端文件存放位置,已经如何访问
springboot 出现 Cannot resolve MVC View ‘index‘ 问题解决办法,前后端不分离项目前端文件存放位置,已经如何访问
95 0
|
开发框架 前端开发 .NET
ASP.NET MVC项目的创建(4)
ASP.NET MVC项目的创建(4)
106 0
ASP.NET MVC项目的创建(4)