【发布时间】:2020-04-03 21:31:26
【问题描述】:
我想给OnGet()方法传参数但是不稳定,每次都不一样,例如:
test.com/book
test.com/book/page/word
test.com/book/page
test.com/book/page/word/...
参数不稳定,是动态创建的。
我该如何处理这个问题?
【问题讨论】:
标签: asp.net-core mvvm razor-pages
我想给OnGet()方法传参数但是不稳定,每次都不一样,例如:
test.com/book
test.com/book/page/word
test.com/book/page
test.com/book/page/word/...
参数不稳定,是动态创建的。
我该如何处理这个问题?
【问题讨论】:
标签: asp.net-core mvvm razor-pages
您可以使用@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。然后,您可以根据需要对其进行处理。
【讨论】: