使用 Segment 功能

发布: (2026年2月28日 GMT+8 05:28)
3 分钟阅读
原文: Dev.to

Source: Dev.to

概述

Segment 属性可以应用于 ASPX 页面。启用后,位于 .aspx 文件之后的任何路径部分都会被视为 (segments),并路由到同一执行页面。该功能让你无需查询字符串即可完全控制 URL 路径。

在页面上启用 Segment

...

示例路径

如果在 /page/about.aspx 上启用了 Segment

/page/about.aspx/segment1/segment2/.../segmentN

文件 /page/about.aspx 仍然会被执行,额外的部分会作为段提供。

如果在 /page/about/Default.aspx 上启用了 Segment

以下两种 URL 都可工作:

/page/about/Default.aspx/segment1/segment2/.../segmentN
/page/about/segment1/segment2/.../segmentN

访问 Segment 值

段采用从零开始的索引。

// 给定 URL: /page/about/segment1/segment2/segment3
Segment.GetValue(0) // 返回 "segment1"
Segment.GetValue(1) // 返回 "segment2"
Segment.GetValue(2) // 返回 "segment3"

在视图中(Razor 风格)

segment 1 is: @Segment.GetValue(0)
segment 2 is: @Segment.GetValue(1)

在传统 ASPX 语法中

segment 1 is: 
segment 2 is: 

在 Code‑Behind 中

using CodeBehind;

namespace YourProjectName
{
    public partial class DefaultController : CodeBehindController
    {
        public void PageLoad(HttpContext context)
        {
            Write(Segment.GetValue(0));
            Write(Segment.GetValue(1));
        }
    }
}

检查 Segment 是否存在

@if (!Segment.Exist(0))
{
    Value does not exist
}

与 MVC 路由的交互

在默认的 MVC 配置中,Segment 功能会自动为控制器路由启用。

using CodeBehind;

public partial class User : CodeBehindController
{
    public void PageLoad(HttpContext context)
    {
        // path: /user/{id}
        Write(Segment.GetValue(0));
    }
}

将 ASPX 文件重写为目录

CodeBehind 框架可以将 .aspx 文件路径重写为目录名称。启用该选项后,省略 .aspx 扩展名的路由会被视为目录路径。

# CodeBehind options (do not change order)
rewrite_aspx_file_to_directory=true

示例

  • /page/contact.aspx 访问为 /page/contact
  • 仍然可以追加段:/page/contact/segment1/segment2/.../segmentN

注意: 启用此重写不会增加额外的处理开销。

限制

如果在某个特定文件上启用了 Segment,则其子目录中的 ASPX 视图文件将不再可访问。
例如,在 /page/about/Default.aspx 上启用了 Segment 后,路径 /page/about/license/Default.aspx 将无法访问。

资源

  • CodeBehind 在 GitHub 上:
  • CodeBehind NuGet 包:
  • CodeBehind 文档页面:
0 浏览
Back to Blog

相关文章

阅读更多 »

JavaScript:开始

JavaScript 在1995年,一位名叫Brendan Eich的程序员在Netscape工作。当时,网站大多是静态的——它们可以显示信息,但……