MVC 是一种用于构建 Web 应用程序的软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。下面由浅入深地介绍ASP.NET MVC 架构。
以下是一个简单的ASP.NET MVC 应用示例,包含一个简单的控制器、模型和视图。
Product
类。csharp
// Models/Product.cs
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
csharp
// Controllers/ProductController.cs
using System.Web.Mvc;
public class ProductController : Controller
{
public ActionResult Details()
{
// 创建一个产品实例
Product product = new Product
{
Id = 1,
Name = "Sample Product",
Price = 9.99m
};
// 将产品传递给视图
return View(product);
}
}
Views/Product
文件夹下创建一个名为Details.cshtml
的视图文件。html
@model YourNamespace.Models.Product
Product Details
Product Details
ID: @Model.Id
Name: @Model.Name
Price: @Model.Price
路由是ASP.NET MVC 中一个重要的概念,它负责将用户的请求映射到相应的控制器和动作方法。默认情况下,ASP.NET MVC 使用约定路由,例如:
csharp
// 在 Global.asax.cs 中配置路由
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这个路由配置表示,当用户访问http://yourdomain.com/Product/Details/1
时,路由系统会将请求映射到ProductController
的Details
动作方法,并将1
作为参数传递给该方法。
html
@using (Html.BeginForm("Create", "Product", FormMethod.Post))
{
@Html.LabelFor(m => m.Name)
@Html.EditorFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)
@Html.LabelFor(m => m.Price)
@Html.EditorFor(m => m.Price)
@Html.ValidationMessageFor(m => m.Price)
}
ASP.NET MVC 提供了内置的数据验证机制,可以通过数据注解来实现。例如:
csharp
using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
[Required(ErrorMessage = "Name is required.")]
public string Name { get; set; }
[Range(0, 1000, ErrorMessage = "Price must be between 0 and 1000.")]
public decimal Price { get; set; }
}
依赖注入是一种设计模式,用于实现松耦合的代码。在ASP.NET MVC 中,可以使用第三方依赖注入容器(如 Autofac、Unity 等)来管理对象的生命周期和依赖关系。
过滤器是一种可以在控制器动作执行前后执行特定逻辑的组件。常见的过滤器包括授权过滤器、动作过滤器、结果过滤器和异常过滤器。例如,授权过滤器可以用于验证用户是否有权限访问某个动作:
csharp
[Authorize]
public class AdminController : Controller
{
// 只有经过授权的用户才能访问这些动作
public ActionResult Index()
{
return View();
}
}
当应用程序变得复杂时,可以使用区域来将应用程序划分为多个功能模块。每个区域都有自己的控制器、视图和模型,并且可以独立部署和管理。
通过以上步骤,你可以逐步深入理解和掌握ASP.NET MVC 架构。在实际开发中,还需要不断学习和实践,结合具体的业务需求来灵活运用这些知识。