ASP.NET FromRoute
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 FromRoute 属性。此属性对于将路由参数绑定到 Web API 中的操作方法参数至关重要。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。FromRoute 属性简化了从 URL 路由绑定参数的过程。
基本定义
ASP.NET 中的 FromRoute 属性将操作方法参数绑定到路由值。它从 URL 路径提取值并将其绑定到方法参数。
当应用于参数时,FromRoute 指定参数的值应来自路由数据。它通常与 HttpGet 和 HttpDelete 一起使用。
FromRoute 是 ASP.NET 模型绑定系统的一部分。它提供了对参数值来源的显式控制,使代码更易于维护。
ASP.NET FromRoute 示例
以下示例演示了一个使用 FromRoute 从路由参数检索产品的 Web API 控制器。
Program.cs
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。
Controllers/ProductsController.cs
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private static List<Product> _products = new()
{
new Product(1, "Laptop", 999.99m),
new Product(2, "Mouse", 19.99m),
new Product(3, "Keyboard", 49.99m)
};
[HttpGet("{id}")]
public IActionResult GetProductById([FromRoute] int id)
{
var product = _products.FirstOrDefault(p => p.Id == id);
if (product == null) return NotFound();
return Ok(product);
}
[HttpGet("category/{categoryId}/products")]
public IActionResult GetProductsByCategory(
[FromRoute(Name = "categoryId")] int catId)
{
// In a real app, we would filter by category
return Ok(_products);
}
}
public record Product(int Id, string Name, decimal Price);
此控制器演示了两种不同的 FromRoute 场景。第一个方法将 id 参数绑定到路由模板 {id}。
第二个方法展示了如何将与操作参数名称不同的路由参数绑定。Name 属性指定要绑定的路由参数名称。
ApiController 属性为无效模型启用自动 HTTP 400 响应。Route 设置此控制器中所有操作的基路径。
该示例展示了 FromRoute 如何提供对路由参数的显式绑定。与隐式绑定相比,这使得代码更具可读性和可维护性。
来源
在本文中,我们探讨了 ASP.NET 8 中的 FromRoute 属性。这项强大的功能提供了对 Web API 中路由参数绑定的显式控制。