ZetCode

ASP.NET URL

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 URL 处理。URL 是 Web 应用程序进行路由和资源标识的基础。

ASP.NET 提供了强大的 URL 操作工具,包括生成、解析和路由。妥善处理 URL 对于 SEO 和用户体验至关重要。

基本定义

URL(Uniform Resource Locator,统一资源定位符)是对 Web 资源的引用。在 ASP.NET 中,URL 用于将请求路由到控制器操作和视图。

ASP.NET 8 提供了多种 URL 操作方式,包括 IUrlHelper 服务和各种 URL 生成方法。这些工具有助于创建可维护的链接。

ASP.NET 中的 URL 可以包含路由参数、查询字符串和片段。框架提供了安全的方式来构建和操作这些组件。

ASP.NET URL 示例

以下示例演示了 ASP.NET 8 应用程序中的 URL 生成和处理。

Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

var app = builder.Build();

app.UseStaticFiles();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

这设置了一个基本的 ASP.NET MVC 应用程序,包含默认路由。MapControllerRoute 方法定义了请求的 URL 模式。

Controllers/ProductController.cs
using Microsoft.AspNetCore.Mvc;

public class ProductController : Controller
{
    public IActionResult Index()
    {
        // Generate URL to another action
        var detailsUrl = Url.Action("Details", "Product", new { id = 42 });
        ViewBag.DetailsUrl = detailsUrl;
        
        return View();
    }

    public IActionResult Details(int id)
    {
        // Get current URL information
        var currentUrl = $"{Request.Scheme}://{Request.Host}{Request.Path}";
        var queryString = Request.QueryString.HasValue ? 
            Request.QueryString.Value : string.Empty;

        ViewBag.CurrentUrl = currentUrl;
        ViewBag.QueryParams = Request.Query;
        
        return View();
    }

    public IActionResult Search(string term)
    {
        // Generate URL with query parameters
        var searchUrl = Url.Action("Search", "Product", new { term = "aspnet" });
        ViewBag.SearchUrl = searchUrl;
        
        return View();
    }
}

此控制器演示了 URL 处理的三个方面。Index 操作通过 Url.Action 展示了 URL 生成,用于创建指向其他操作的链接。

Details 操作展示了如何从请求中访问当前的 URL 信息。这包括 scheme、host、path 和 query string 组件。

Search 操作演示了如何生成带有查询参数的 URL。Url.Action 方法会自动对值进行编码,以确保 URL 的安全性。

Views/Product/Index.cshtml
@{
    ViewData["Title"] = "Products";
}

<h2>Product Listing</h2>

<p>
    <a href="@ViewBag.DetailsUrl">View Product 42 Details</a>
</p>

<p>
    <a href="@Url.Action("Search", "Product", new { term = "net8" })">
        Search for .NET 8 products
    </a>
</p>

视图展示了在 Razor 视图中生成 URL 的两种方法。第一种使用 ViewBag 中预先生成的 URL,第二种使用 Url.Action

此示例涵盖了 ASP.NET 8 中 URL 处理的关键方面,包括生成、访问当前 URL 数据以及查询参数处理。

来源

Microsoft ASP.NET 路由文档

在本文中,我们探讨了 ASP.NET 8 中的 URL 处理。妥善管理 URL 对于构建可维护且对 SEO 友好的 Web 应用程序至关重要。

作者

我叫 Jan Bodnar,是一位热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 ASP.NET 教程