在 .Net Core razor 页面中传递路由参数
Posted
技术标签:
【中文标题】在 .Net Core razor 页面中传递路由参数【英文标题】:Passing route parameters in .Net Core razor pages 【发布时间】:2020-04-03 21:31:26 【问题描述】:我想给OnGet()
方法传参数但是不稳定,每次都不一样,例如:
test.com/book
test.com/book/page/word
test.com/book/page
test.com/book/page/word/...
参数不稳定,是动态创建的。
我该如何处理这个问题?
【问题讨论】:
【参考方案1】:您可以使用@page
directive 处理此问题。
根据您的实际需要有多种选择。
你提前知道你的网址结构
在.cshtml
页面中,添加@page
指令,每个可选参数后跟一个问号。请注意,您还可以指定constraints 来指定特定参数需要是某种类型,例如整数(例如,这里line
是可选整数)。
@page "/book/pageName?/line:int?/word?"
在您的模型类中,添加与 @page
指令中的名称匹配的可空可选参数:
public void OnGet([FromRoute] string pageName= null, [FromRoute] int? line = null, [FromRoute] string word = null)
// TODO handle parameters
// note that line is guaranteed to be an integer
您不知道网址的确切结构
在这种情况下,您可以使用通配符参数,在参数名称前用星号指定:
@page "/book/*content"
public void OnGet([FromRoute] string content= null)
// TODO handle content
在这种情况下,content
将包含在/book/
之后传递的整个字符串,包括正斜杠,例如page/word/5/test
。然后,您可以根据需要对其进行处理。
【讨论】:
需要注意多个可选参数:mikesdotnetting.com/article/339/…以上是关于在 .Net Core razor 页面中传递路由参数的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 3.1 Razor 页面路由不明确匹配异常
如何使用 Url.Action 在 asp.net core 2.0 razor 页面中传递多个操作
使用 ASP NET Core 2.0 Razor 页面进行路由
将数据从 javascript 传递到 asp.net core 2 razor 页面方法