《精通 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章将解释这个文件中的条目。

相关文章
|
1月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
1月前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
2月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
39 1
Spring MVC——项目创建和建立请求连接
|
2月前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
2月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
60 2
|
3月前
|
开发框架 前端开发 .NET
VB.NET中如何利用ASP.NET进行Web开发
在VB.NET中利用ASP.NET进行Web开发是一个常见的做法,特别是在需要构建动态、交互式Web应用程序时。ASP.NET是一个由微软开发的开源Web应用程序框架,它允许开发者使用多种编程语言(包括VB.NET)来创建Web应用程序。
65 5
|
3月前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
|
2月前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报

相关实验场景

更多