首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET核心剃刀页面终结点路由,用于URL中页面名称之后的所有路径

ASP.NET Core Razor Pages 是一种用于构建 Web 应用程序的框架,它提供了一种简单的方式来创建动态网页。Razor Pages 终结点路由是指如何处理 URL 中的请求并将其映射到相应的页面或操作。

基础概念

在 ASP.NET Core 中,Razor Pages 使用终结点路由来处理 HTTP 请求。每个 Razor Page 都有一个关联的路由模板,该模板定义了如何将 URL 映射到页面。默认情况下,Razor Pages 的路由模板是 {page}.cshtml,其中 {page} 是页面的名称。

优势

  • 简单易用:Razor Pages 提供了一种声明式的方式来定义页面和它们的路由,这使得开发人员可以快速上手。
  • 分离关注点:Razor Pages 将页面的逻辑与视图分离,使得代码更加清晰和易于维护。
  • 内置支持:ASP.NET Core 提供了对 Razor Pages 的内置支持,包括身份验证、授权、表单处理等功能。

类型

Razor Pages 的路由可以分为两种类型:

  1. 常规路由:这是默认的路由方式,URL 中的路径直接映射到页面文件。
  2. 带参数的路由:可以在路由模板中定义参数,这些参数可以在页面模型中使用。

应用场景

Razor Pages 适用于各种 Web 应用程序,特别是那些需要快速开发和迭代的项目。它特别适合于小型到中型的应用程序,以及那些不需要复杂路由逻辑的场景。

问题与解决

问题:URL 中页面名称之后的所有路径未被正确处理

这通常是因为 Razor Pages 的路由配置不正确,或者请求的路径与任何页面的路由模板都不匹配。

原因

  • 路由模板定义错误。
  • 请求的路径不正确。
  • 页面文件不存在或命名错误。

解决方法

  1. 检查路由模板:确保每个页面的路由模板正确无误。例如,如果你有一个名为 About.cshtml 的页面,它的路由模板应该是 {page}.cshtml
  2. 检查请求路径:确保客户端发送的请求路径与页面的路由模板匹配。例如,如果你有一个名为 About.cshtml 的页面,你应该访问 /About 而不是 /About/Details
  3. 检查页面文件:确保页面文件存在于正确的目录中,并且文件名与路由模板匹配。

示例代码

假设你有一个名为 About.cshtml 的页面,并且你想处理 URL 中 /About 之后的所有路径,你可以这样做:

代码语言:txt
复制
// 在 Startup.cs 或 Program.cs 中配置路由
app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();
});
代码语言:txt
复制
// 在 About.cshtml.cs 页面模型中处理额外的路径参数
public class AboutModel : PageModel
{
    public void OnGet(string path)
    {
        // 处理路径参数
        ViewData["Path"] = path;
    }
}
代码语言:txt
复制
<!-- 在 About.cshtml 视图中显示路径参数 -->
<p>Requested path: @ViewData["Path"]</p>

参考链接

通过以上配置和代码示例,你应该能够正确处理 URL 中页面名称之后的所有路径。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Blazor 中的路由和路由模板

过去的 ASP.NET Web 窗体和现代 Web 明显区别在于 Web 服务器入口是否存在路由组件。在 Web 窗体中,绝大多数 Web 终结点都是物理文件资源,直接通过其页面路径调用。...请注意,路由器类行为的这一特定方面可能会在未来发展为一种模型,必须在该模型中明确指定路由器要考虑的程序集。这样就可以得到所需的终结点。 在内部,路由器生成路由表并按给定顺序对它们进行排序。...此外,正如在 ASP.NET MVC 中发生的那样,解析 URL 时,表中的路由将从最具体到最不具体进行评估,并且搜索在首次匹配时停止。...在 Blazor 中,URL 模式或路由模板被收集在路由表中。该表通过查看使用 Route 属性修饰的 Blazor 应用程序的组件进行填充。每个组件的路径都将成为受支持的路由模板。...如果当前页面 URL 与引用的 URL 匹配,则“活动”CSS 类将自动添加到由 NavLink 组件呈现的定位标记中。“活动”CSS 类的实现仍然是页面开发人员的责任。

8.4K21

使用DOT语言和GraphvizOnline来可视化你的ASP.NETCore3.0终结点01

使用有向图来可视化ASP.NET Core终结点 ASP.NETCore中的终结点路由系统通过创建端点URL段的有向图来有效地工作。然后将传入的请求与图进行匹配(一次一个段),以确定要执行的终结点。...例如,以下简单有向图表示ASP.NET Core3.0 RazorPages 默认应用程序模板中的终结点(dotnet new webapp),其中包含三个Razor页面:Index.cshtml, Error.cshtml...在上面的DOT文件中,节点被赋予顺序的整数名,1, 2, 3等,并使用端点名称进行标记。这是ASP.NET Core用于表示终结点图的格式。 对于Razor页面,路由非常简单,所以图非常明显。...URL段与图中的边进行增量匹配,并在图中遍历一条路径,直到整个请求URL匹配为止。 每个节点(由在ASP.NET Core中的DfaNode中)有几个属性。...在下一篇文章中,我将展示如何自动为自己的ASP.NET Core应用程序生成端点图。 总结 在这篇文章中,我介绍了用于描述图形的DOT语言,并展示了如何使用在线编辑从图表中创建图像。

2.3K30
  • ASP.NET Core 3.0 的新增功能

    使用终结点路由,通常可以在 UseRouting 中配置所有的路由: app.UseRouting(routes => { routes.MapRazorPages(); routes.MapHub...total-requests current-requests failed-requests 终结点路由 终结点路由得到了增强,该路由使各种框架(例如 MVC)可以与中间件更好地协同工作: 中间件和终结点的顺序可以在...过滤器和特性 (attribute) 可以被放置在控制器的方法上。 有关更多信息,请参见 ASP.NET Core 中的路由。 运行状况检查 运行状况检查通过通用主机使用终结点路由。...在 Startup.Configure 中,使用终结点 URL 或者相对路径,在终结点构建器上调用 MapHealthChecks: app.UseEndpoints(endpoints => {...在 Windows 服务中承载 ASP.NET Core Forwarded 标头中间件的改进 在早期版本的 ASP.NET Core 中,应用在部署到 Azure Linux 或者除 IIS 之外的任何反向代理之后

    6.8K30

    ASP.NET的路由系统:URL与物理文件的分离

    表现为请求地址与目标Controller和Action的动态映射的URL路由系统并不是专属于ASP.NET MVC,而是直接建立在ASP.NET 中。...二、 实例演示:通过URL路由实现请求地址与.aspx页面的映射 接下来我们将创建一个简单的ASP.NET Web Forms应用,并采用一个独立于.aspx文件路径的URL来访问对应的Web页面,而两者之间的映射通过...要通过一个独立于物理路径的URL来访问该.aspx页面,我们就需要采用URL路由机制来实现两者之间的映射。为此我们在添加的Global.asax文件中编写了如下几行代码。...对象用于指定定义在路由模板中相应变量({name}和{id})的默认值。...由于所有员工列表和单一员工的详细信息均体现在该页面中,所以我们需要根据其请求地址来判断应该呈现怎样的数据,而这可以通过RouteData属性表示的路由数据来实现。

    1.2K80

    ASP.NET 路由

    在一个不使用路由的 ASP.NET 应用程序中,对 URL 的传入请求通常映射到磁盘上的物理文件,如 .aspx 文件。...在 ASP.NET 路由中,您可以定义 URL 模式,该模式包含在处理 URL 请求时使用的值的占位符。在运行时,应用程序名称后面的 URL 部分根据您所定义的 URL 模式分析为离散值。...在 URL 重写中,如果更改了 URL 模式,则必须手动更新包含原始 URL 的所有超链接。 由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。...定义的 URL 模式称作“路由”。在路由中,您可以指定占位符,用于映射到从 URL 请求中分析的值。您还可以指定用于匹配 URL 请求的常量值。...因此你可以在地址栏中输入各种Urls来观察它匹配了哪一个路径。在页面底部,显示了你的程序中所有被定义的route列表。它可以让你看到当前的URL匹配哪个你定义的route。

    2.3K81

    Asp.net MVC 之 Contorllers(二)

    在页面处理程序方面,ASP.NET 机制正常处理该请求。 接着,URL路由模块尝试匹配所有应用程序定义的路由的URL。...在 ASP.NET 缓存中先检查,如果对于请求没有可用的响应,之后就会触发该事件。...应用程序路由 按照设计,ASP.NET MVC 应用程序并没有依赖于物理页面。在 ASP.NET MVC 中,用户请求代理资源(acting on resources)。...URL模式和路由 路由是URL绝对路径样式匹配的字符串,也就是一个没有协议、服务和端口信息的URL字符串。路由可能是一个字符串常量,但很可能还包含一些占位符。...属性路由 NuGet 的 ASP.NET MVC 5 中包含 AttributeRouting 。属性路由是所有有关使用属性直接在控制器的Action方法上定义的路由。

    1.9K60

    ASP.NET Core 6框架揭秘实例演示:跨域资源的共享(CORS)N种用法

    图1 演示实例解决方案结构 如下所示的Api程序中定义了表示联系人的Contact记录类型。我们注册了针对路径“/contacts”的路由使之以JSON的形式返回一组联系人列表。...我们通过注册针对根路径的路由使之现一个包含联系人列表的Web页面,我们在该页面中采用jQuery以AJAX的方式调用上面这个API获取呈现的联系人列表。...[S2906]将CORS规则应用到路由终结点上(代码编程形式) 除了在调用UseCors扩展方法时指定Cors策略外,我们还可以在注册终结点的时候将Cors规则作为路由元数据应用到终结点上。...如下的演示程序在调用MapGet方法注册了针对“/contacts”路径的终结点后会返回一个RouteHandlerBuilder对象,它接着调用该对象的RequireCors扩展方法来指定采用的CORS...[S2907]将CORS规则应用到路由终结点上(特性标注形式) 我们也可以按照如下的方式在终结点处理方法GetContacts上标注EnableCorsAttribute特性,并利用其“policyName

    39420

    通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现:路由整合

    简单起见,我们在这里作了这么一个假设:所有的Controller类型都定义在当前ASP.NET Core应用所在的项目(程序集)中。...当描述Action的所有ActionDescriptor对象被解析出来之后,MVC框架需要将它们转换成表示路由终结点的RoutEndpoint对象。...的构造函数中除了注入了用于提供Action描述的IActionDescriptorCollectionProvider对象之外,还注入了用于路由模式转换的RoutePatternTransformer对象...在如下所示的应用承载程序中,在完成了针对路由终结点以及所需服务注册之后,我们调用了前面定义的AddMvcControllers扩展方法注册了模拟MVC框架必要的服务。...Action方法BarAsync则采用约定路由,按照约定路由的模板定义( “{controller}/{action}” ),我们应该将URL的路径设置为 “/foobar/bar” 。

    1.2K30

    ASP.NET Core 6框架揭秘实例演示:错误页面的N种呈现方式

    该程序注册了一个路由模板为“{foo}/{bar}”的终结点,后者在处理请求时直接抛出异常。...图2 开发者异常页面(基本信息) 开发者异常页面除了显示与抛出的异常相关的信息,还会以图3所示的形式显示与当前请求上下文相关的信息,包括当前请求URL携带的所有查询字符串、所有请求报头、Cookie的内容和路由信息...(终结点和路由参数)。...演示程序注册了一个针对根路径(“/”)的并且直接抛出异常的终结点,当我们利用浏览器访问该终结点时,这个定制的错误消息会以图4所示的形式直接呈现在浏览器上。...应用启动后,针对根路径的请求会得到如图6所示错误页面。

    77920

    ASP.NET Core3.X 终端中间件转换为端点路由运行

    路由的进阶 路由负责将请求 URI 映射到终结点并向这些终结点调度传入的请求。 路由在应用中定义,并在应用启动时进行配置。 路由可以选择从请求包含的 URL 中提取值,然后这些值便可用于处理请求。...通过使用应用中的路由信息,路由还能生成映射到终结点的 URL。 在ASP.NET Core 2.1和更低版本中,路由是通过实现将IRouter传入的URL映射到处理程序的接口来处理的。...但是从某种意义上说,整个Map分支对应于应用程序的“端点”. 在ASP.NET Core 2.2中,引入了终结点路由作为MVC控制器的新路由机制。...实际上,这意味着我们有两个中间件: EndpointRoutingMiddleware 实际的路由,即计算将为指定的请求URL路径调用哪个端点。...它比以前的版本功能强大得多. 在上一个示例中,我们提供了一个显示名称(主要用于调试目的),但是我们可以附加其他的信息,例如授权策略或CORS策略,其他中间件可以查询这些信息。

    1.1K10

    ASP.NET Core路由中间件: 终结点与URL的映射

    借助路由系统提供的请求URL模式与对应终结点(Endpoint)之间的映射关系,我们可以将具有相同URL模式的请求分发给应用的终结点进行处理。...可以将一个ASP.NET Core应用视为一组终结点的组合,所谓的终结点可以理解为能够通过HTTP请求的形式访问的远程服务。每个终结点通过RequestDelegate对象来处理路由过来的请求。..."); } await context.Response.WriteAsync(""); } ... } 有了这两个核心参数之后...一个URL可以通过分隔符“/”划分为多个路径分段(Segment),路由模板中定义的路由参数一般来说会占据某个独立的分段(如“weather/{city}/{days}”)。...但也有例外情况,我们既可以在一个单独的路径分段中定义多个路由参数,也可以让一个路由参数跨越多个连续的路径分段。 下面先介绍在一个独立的路径分段中定义多个路由参数的情况。

    94531

    ASP.NET MVC5请求管道和生命周期

    请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。...路由系统的职责是从请求URL中获取controller和action的名称以及其它请求数据。...UrlRoutingModule根据当前请求的URL和RouteTable中已注册的路由模板进行匹配并返回第一个和当前请求相匹配的路有对象Route,然后根据路有对象获取路由数据对象RouteData(...ASP.NET MVC中,路由数据必须包含controller和action的名称),再有RouteData获取IRouteHandler最终有IRouteHandler得到IHttpHandler。...在ASP.NET MVC中所有的过滤器最终都会被封装为Filter对象,该对象中FilterScope类型的属性Scope和int类型属性Order用于决定过滤器执行的先后顺序,具体规则如下: Order

    1.7K30

    跨平台开发体验: Windows

    对于ASP.NET Core MVC框架来说,它在处理HTTP请求的过程中所需的一系列服务同样需要预先注册。对这个概念有了基本的了解之后,相信读者朋友们对如下所示的代码就容易理解了。...这里所谓的终结点可以视为应用程序提供的针对HTTP请求的处理器,这两个终结点通过预先设置的规则将具有某些特征的请求(比如路径、HTTP方法等)映射到对应的终结点,进而实现路由的功能。...对于一个MVC应用程序来说,我们可以将定义在Controller类型中的Action方法视为一个终结点,那么路由映射最终体现在HTTP请求与目标Action方法的映射上。...如下所示的HelloController是我们定义的Controller类型。按照约定,所有的Controller类型名称都应该以“Controller”字符作为后缀。...换句话说,满足该路径模式的请求URL携带的姓名将自动绑定到该Action方法的name参数上。

    2K30

    如何在 ASP.NET MVC 中集成 AngularJS(1)

    HTML5 History API 是通过脚本来操作浏览器历史记录的标准方法,以这点为核心,是实现单页面应用的重点。...基本 URL 用于在整个应用程序中,解决所有相对 URL 的问题。你可以在应用程序中设置,如下所示的母版页的 header 部分的基本 URL: 中的运行按钮来直接执行这个页面,MVC 将会执行并尝试去查找一个用于客户路由的 MVC 控制器和视图。...你可以在 MVC 路由表中以一种通配符的路由来处理你的路由,但我更愿意使用明确的路由表,并使得 MVC 拒绝所有无效的路由。...下面的代码片段在应用程序启动之后,使用了 $controllerProvider 来使注册方法有效。在下面的例子中,提供了一种用于注册和动态加载两个控制器和服务的注册方法。

    7.6K60

    C# .NET面试系列七:ASP.NET Core

    app.UseRouting();3、UseEndpoints// 配置终结点路由,用于映射终结点(endpoint)到控制器和动作方法。...21. dot net core 里面的路径是如何处理的?在ASP.NET Core中,请求的路径是通过中间件处理管道中的路由系统进行处理的。...这是基于终结点的路由配置方式,取代了之前版本的 UseMvc。...4、路由参数// 路由系统还支持从URL中提取参数,例如在路由模式中定义的参数。例如,在路由模式 {controller}/{action}/{id?}...通过配置路由系统,你可以定义应用程序中的 URL 结构,将请求映射到相应的控制器和动作方法。这种灵活的路由系统使得在ASP.NET Core 应用程序中定义清晰而富有表达力的 URL 成为可能。

    35810

    ASP.NET Core 错误处理(Handle Errors)

    : 该异常页面展示了如下信息: 异常消息 异常堆栈追踪(Stack) HTTP请求查询参数(Query) Cookies HTTP请求标头(Headers) 路由(Routing),包含了终结点和路由信息...该异常处理程序: 可以捕获后续中间件未处理的异常 若无异常或HTTP响应已经启动(Response.HasStarted == true),则不做任何处理 不会改变URL中的路径 默认情况下,会生成类似如下的模板...同样的,会有一个占位符{0},用于填充Http状态码 向客户端发送Http状态码302-已找到 然后将客户端重定向到指定的终结点,在该终结点中,可以针对不同错误状态码分别进行处理 app.UseStatusCodePagesWithRedirects...不知道你有没有注意:当我们请求一个不存在的路径时,它的确会跳转到404页面,但是,Url也变了,变成了/Home/StatusCodeError?...或Action配置不同的异常过滤器 异常过滤器非常适合用于捕获并处理Action中的异常。

    2.1K20

    【ASP.NET Core 基础知识】--中间件--内置中间件的使用

    一、内置中间件的介绍 1.1 静态文件中间件 在ASP.NET Core中,静态文件中间件是一种用于处理和提供静态文件的内置中间件。...1.3 路由中间件 ASP.NET Core中的路由中间件用于将传入请求映射到处理请求的代码。路由是一个关键的组件,负责解释传入的URL并决定应该调用应用程序中的哪个处理程序。...是路由模式的参数。 1.4 异常处理中间件 ASP.NET Core中的异常处理中间件用于处理应用程序中发生的异常,提供一种集中管理和处理异常的机制。.../Home/Error是一个控制器中的操作方法,用于显示自定义的错误页面。...四、总结 ASP.NET Core中的中间件是构建灵活且高效Web应用的关键组件。通过内置中间件,我们能实现静态文件处理、身份验证和路由等核心功能。

    54910

    【asp.net core 系列】2 控制器与路由的恩怨情仇

    当然,那是以后的事情。这一篇将通过自定义一个控制器来为大家介绍asp.net core mvc 中控制器和路由的相关知识。 ? 1....当接到用户或者界面转交的请求时,程序从请求路径中解析出控制器名称,然后寻找 Controller 或者 : Controller 的类。...路由 在第一节中,我们介绍了一下asp.net core mvc如何寻找控制器和Action,那这一节将介绍程序如何从请求链接中解析出控制器和Action的名称,也就是路由映射。...路由(Routing)负责匹配传入的HTTP请求,然后将这些请求发送给应用的可执行终结点。终结点是应用的可执行请求处理代码单元,也就是我们控制器里的方法(Action)。...2.1 路由的配置 对于所有的asp.net core模板都包括生成在代码中的路由。通常,我们要求路由在Startup.Configure方法中进行配置。

    91020
    领券