我想将参数传递给OnGet()
方法,但它不稳定,每次都不同,例如:
test.com/book
test.com/book/page/word
test.com/book/page
test.com/book/page/word/...
参数不稳定,会动态创建。
我该如何解决这个问题?
答案 0 :(得分:2)
您可以使用@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
}
您不知道URL的确切结构
在这种情况下,您可以使用通配符参数,在参数名称前加星号:
@page "/book/{*content}"
public void OnGet([FromRoute] string content= null)
{
// TODO handle content
}
在这种情况下,content
将包含在/book/
之后传递的整个字符串,包括正斜杠,例如page/word/5/test
。然后,您可以根据需要进行处理。