You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor Pages自定义路由routeUrl获取及RouteData相关问题咨询

Razor Pages自定义路由传递与RouteData相关问题解答

问题1:如何无需硬编码,在表单中传递自定义页面URL?

你当前用ViewContext.RouteData.Values["Page"]获取到的是页面的默认文件路径路由(比如/Landing),而非@page指令设置的自定义路由。可以通过以下两种可靠方式获取并传递自定义路由URL:

方式1:使用Url.Page()生成对应页面的自定义路由

Url.Page()方法会自动识别页面@page指令配置的自定义路由,生成正确的URL。如果是当前页面(Landing.cshtml),可以直接传入页面名称:

<input type="hidden" id="returnUrl" name="returnUrl" value='@Url.Page("Landing")'>

如果需要在其他页面的表单中传递Landing的自定义路由,同样使用这个方法即可,无需硬编码路径。

方式2:直接获取当前请求的路径(仅适用于当前页面的表单)

如果表单就在自定义路由对应的页面上,当前请求的路径就是自定义路由本身,可以直接用Context.Request.Path获取:

<input type="hidden" id="returnUrl" name="returnUrl" value='@Context.Request.Path'>

这个方式更通用,无需指定页面名称,适合当前页面内的跳转场景。


问题2:ViewContext.RouteData.Values与RouteData.Values有何区别?

二者本质上指向同一个RouteData实例,所以包含的键值对完全一致,区别仅在于访问场景:

  • RouteData是Razor Pages页面模型(PageModel)的属性,主要在页面模型的后台代码(比如OnGet/OnPost方法)中直接调用;
  • ViewContext.RouteData是视图上下文(ViewContext)的属性,主要在.cshtml视图文件中使用——因为视图无法直接访问页面模型的RouteData(除非显式引用Model.RouteData),而ViewContext是视图的内置对象,更方便在视图中获取路由数据。

简单来说,它们是同一数据的不同访问入口,适配不同的代码场景。


内容的提问来源于stack exchange,提问作者Duke3e33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:40:37