C#教程:ASP.NETWeb开发入门(如果教程侧重于ASP.NET)
C# 教程:ASP.NET Web 开发入门
ASP.NET 是一个强大的 Web 应用程序框架,由微软开发,用于构建动态网站、Web 应用程序和 Web 服务。它基于 .NET 平台,可以使用 C# 等多种编程语言。本教程将引导您入门 ASP.NET Web 开发,重点介绍使用 C# 语言构建 Web 应用程序的基础知识。
一、ASP.NET 简介
ASP.NET 提供了多种开发模型,包括:
-
ASP.NET Web Forms: 一种基于事件驱动的编程模型,类似于 Windows Forms 开发。它使用服务器控件和视图状态来简化 Web 开发,但可能会导致页面臃肿和性能问题。 (本教程较少涉及,因为目前主流是 MVC 和 Web API)
-
ASP.NET MVC (Model-View-Controller): 一种流行的设计模式,将应用程序分为三个主要组件:
- Model(模型): 表示应用程序的数据和业务逻辑。
- View(视图): 负责显示数据并与用户交互(通常是 HTML、CSS 和 JavaScript)。
- Controller(控制器): 处理用户请求,与模型交互,并选择要呈现的视图。
MVC 模式使代码更易于组织、测试和维护。
-
ASP.NET Web API: 用于构建 HTTP 服务(RESTful API),这些服务可以被各种客户端(包括浏览器、移动应用程序等)使用。 Web API 通常用于构建单页应用程序 (SPA) 或为移动应用程序提供后端支持。
-
ASP.NET Core: 一个跨平台、高性能的开源框架,是 ASP.NET 的新一代版本。它结合了 MVC 和 Web API 的功能,并进行了许多改进和优化。 (如果教程侧重于 ASP.NET Core,则应明确指出,本文主要关注传统的 ASP.NET)
-
ASP.NET Razor Pages: 一种更轻量级的、基于页面的开发模型,简化了简单Web应用程序的开发. Razor Pages 将 UI 逻辑(使用 Razor 语法)直接嵌入到 HTML 页面中.
本教程主要关注 ASP.NET MVC 和 ASP.NET Web API,因为它们是目前构建 Web 应用程序最常用的两种方式。
二、开发环境设置
-
Visual Studio: 微软提供的集成开发环境 (IDE),是开发 ASP.NET 应用程序的首选工具。 建议使用 Visual Studio 2019 或更高版本。 Visual Studio Community 版本是免费的,适用于个人开发者和小型团队。
-
.NET Framework 或 .NET SDK: 根据您选择的 ASP.NET 版本,需要安装相应的 .NET Framework 或 .NET SDK。 Visual Studio 安装程序通常会提供安装这些组件的选项。
-
IIS Express (可选): Visual Studio 自带的轻量级 Web 服务器,用于在开发过程中运行和调试 ASP.NET 应用程序。 如果您需要更全面的 Web 服务器功能,可以安装完整的 IIS (Internet Information Services)。
-
SQL Server Express LocalDB (可选):Visual Studio 自带的轻量级数据库,便于开发.
三、创建第一个 ASP.NET MVC 应用程序
-
打开 Visual Studio,选择“创建新项目”。
-
在项目模板中,选择“ASP.NET Web 应用程序 (.NET Framework)”或“ASP.NET Core Web 应用程序” (如果使用 .net core)。 选择 C# 作为编程语言。
-
为项目命名,选择项目位置,然后单击“创建”。
-
在下一个对话框中,选择“MVC”模板。 确保选择了正确的 .NET Framework 或 .NET 版本。 您可以选择是否添加身份验证(例如,个人用户帐户)。
-
单击“创建”以创建项目。
Visual Studio 将创建一个包含基本 MVC 应用程序结构的项目。 您将看到以下文件夹:
- Models: 用于存放数据模型类。
- Views: 用于存放视图文件(.cshtml 文件,使用 Razor 语法)。
- Controllers: 用于存放控制器类。
- App_Start: 包含一些启动配置,例如
RouteConfig.cs
- Content: 用于存放静态资源(CSS、JavaScript、图像等)。
- Scripts: 用于存放 JavaScript 文件。
四、MVC 应用程序的基本结构
-
控制器 (Controllers): 控制器是处理用户请求的中心。它们接收来自浏览器的请求,与模型交互以获取或更新数据,然后选择一个视图来呈现给用户。
```csharp
// Controllers/HomeController.cs
using System.Web.Mvc;namespace MyWebApp.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to my ASP.NET MVC application!";
return View();
}public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } }
}
```ActionResult
是控制器方法的返回类型,表示要执行的操作结果(例如,返回一个视图、重定向到另一个 URL、返回 JSON 数据等)。View()
方法返回一个视图。 默认情况下,它会查找与控制器方法同名的视图文件(例如,Index()
方法会查找Views/Home/Index.cshtml
)。ViewBag
是一个动态对象,用于将数据从控制器传递到视图。
-
视图 (Views): 视图负责呈现用户界面。 ASP.NET MVC 使用 Razor 语法,它允许您在 HTML 中嵌入 C# 代码。
```html
@{
ViewBag.Title = "Home Page";
}@ViewBag.Message
Learn about building Web apps with ASP.NET.
```
@
符号表示 Razor 代码块的开始。@ViewBag.Message
显示从控制器传递过来的消息。
-
模型 (Models): 模型表示应用程序的数据和业务逻辑。 它们通常是简单的 C# 类。
csharp
// Models/Product.cs
namespace MyWebApp.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
} -
路由 (Routing): 路由配置定义了 URL 如何映射到控制器和操作。默认路由配置通常位于
App_Start/RouteConfig.cs
文件中。
```csharp
//App_Start/RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
}
``
{controller}/{action}/{id}
这段代码定义了一个名为"Default"的路由规则。
*: 这是 URL 模式。它表示 URL 的结构。
{controller}
*: URL 中的第一个部分,对应于控制器名称。
{action}
*: URL 中的第二个部分,对应于控制器中的操作(方法)名称。
{id}
*: URL 中的第三个部分,通常是可选的参数.
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
*: 这部分指定了默认值。
controller = "Home"
*: 如果没有指定控制器,则默认使用名为 "Home" 的控制器。
action = "Index"
*: 如果没有指定操作,则默认使用 "Home" 控制器中的 "Index" 操作。
id = UrlParameter.Optional
*:
id` 参数是可选的。
五、创建第一个 ASP.NET Web API 应用程序
-
与创建 MVC 应用程序类似,选择“ASP.NET Web 应用程序 (.NET Framework)”或“ASP.NET Core Web 应用程序”。
-
选择“Web API”模板。
-
Visual Studio 将创建一个包含基本 Web API 应用程序结构的项目。 您将看到与 MVC 应用程序类似的文件夹,但 Controllers 文件夹中的控制器类将继承自
ApiController
(或 .NET Core 中的ControllerBase
)。 -
Web API 控制器示例:
```csharp
// Controllers/ProductsController.cs
using System.Collections.Generic;
using System.Web.Http;
using MyWebApp.Models;namespace MyWebApp.Controllers
{
public class ProductsController : ApiController
{
// GET api/products
public IEnumerableGet()
{
// 返回所有产品
return new List
{
new Product { Id = 1, Name = "Product 1", Price = 10.99m },
new Product { Id = 2, Name = "Product 2", Price = 25.50m }
};
}// GET api/products/5 public Product Get(int id) { // 返回指定 ID 的产品 return new Product { Id = id, Name = "Product " + id, Price = 10.99m * id }; } // POST api/products public void Post([FromBody] Product product) { // 添加新产品 } // PUT api/products/5 public void Put(int id, [FromBody] Product product) { // 更新指定 ID 的产品 } // DELETE api/products/5 public void Delete(int id) { // 删除指定 ID 的产品 } }
}
```- Web API 控制器方法通常返回
HttpResponseMessage
或直接返回数据对象(例如,IEnumerable<Product>
)。 [HttpGet]
、[HttpPost]
、[HttpPut]
和[HttpDelete]
等属性用于指定 HTTP 方法(GET、POST、PUT、DELETE)。[FromBody]
属性指示参数值应从请求正文中读取。- Web API 使用约定来确定 URL 与控制器和操作的映射关系。例如,
GET api/products
会调用ProductsController
的Get()
方法。
- Web API 控制器方法通常返回
六、数据库访问 (Entity Framework)
ASP.NET 应用程序通常需要与数据库交互。Entity Framework (EF) 是微软提供的 ORM(对象关系映射)框架,可以简化数据库访问。
-
安装 Entity Framework NuGet 包。 在 Visual Studio 中,右键单击项目,选择“管理 NuGet 程序包”,搜索并安装 "EntityFramework" 或 "Microsoft.EntityFrameworkCore"(对于 .NET Core)。
-
创建数据模型类。 (如上面Product类)
-
创建 DbContext 类。
DbContext
类表示与数据库的会话,并包含用于查询和操作数据的DbSet
属性。```csharp
// Models/MyDbContext.cs
using System.Data.Entity; // 或者 using Microsoft.EntityFrameworkCore;namespace MyWebApp.Models
{
public class MyDbContext : DbContext
{
public DbSetProducts { get; set; }
//可以添加其他 DbSet 属性以映射到数据库中的其他表
//配置连接字符串(通常在 Web.config 或 appsettings.json 文件中):
//在web.config中的部分:
//
//或者webapi项目中的appsettings.json
/
"ConnectionStrings": {
"MyDbContext": "Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true"
}
/
public MyDbContext() : base("name=MyDbContext") // 构造函数,指定连接字符串的名称
{
}
}
}
``` -
在控制器中使用 DbContext。
```csharp
//在控制器中使用 DbContext 来查询和操作数据:
public class ProductsController : ApiController
{
private MyDbContext db = new MyDbContext();public IEnumerable<Product> Get() { return db.Products.ToList(); // 查询所有产品 } public IHttpActionResult Get(int id) //更推荐返回IHttpActionResult { var product = db.Products.Find(id); if (product == null) { return NotFound(); // 如果未找到,返回 404 Not Found } return Ok(product); //如果找到,返回200 OK及数据 } // ... 其他方法 protected override void Dispose(bool disposing) { if (disposing) { db.Dispose(); // 释放 DbContext 资源 } base.Dispose(disposing); }
}
```
七、其他重要概念
- 依赖注入 (Dependency Injection): 一种设计模式,用于降低代码之间的耦合度。 ASP.NET MVC 和 Web API 都支持依赖注入。
- 身份验证和授权 (Authentication and Authorization): ASP.NET 提供了强大的身份验证和授权机制,用于保护您的应用程序。
- 测试 (Testing): 编写单元测试和集成测试对于确保应用程序的质量至关重要。 ASP.NET MVC 和 Web API 都支持测试。
- 部署 (Deployment): 将 ASP.NET 应用程序部署到 Web 服务器(例如 IIS)或云平台(例如 Azure)。
八、总结
本教程提供了 ASP.NET Web 开发的入门指南,重点介绍了 ASP.NET MVC 和 Web API。 通过学习本教程,您应该能够:
- 了解 ASP.NET 的基本概念和开发模型。
- 设置 ASP.NET 开发环境。
- 创建基本的 ASP.NET MVC 和 Web API 应用程序。
- 理解 MVC 应用程序的结构(模型、视图、控制器)。
- 使用 Razor 语法在视图中显示数据。
- 使用 Entity Framework 访问数据库。
- 了解 Web API 的基本原理。
- 了解路由,依赖注入等常用概念.
这只是 ASP.NET Web 开发的开始。 要深入学习,建议您参考微软官方文档、在线教程和书籍,并进行大量的实践。