Ali*_*imi 2 mvvm asp.net-core razor-pages
我想将参数传递给OnGet()方法,但它不稳定并且每次都不一样,例如:
test.com/book
test.com/book/page/word
test.com/book/page
test.com/book/page/word/...
Run Code Online (Sandbox Code Playgroud)
参数不稳定,是动态创建的。
我该如何处理这个问题?
您可以使用@page指令来处理这个问题。
根据您的实际需要,有多种选择。
您事先知道 URL 的结构
在您的.cshtml页面中,您添加@page指令,每个可选参数后跟一个问号。请注意,您还可以指定约束来指定特定参数需要是某种类型,例如整数(例如,这里line是可选整数)。
@page "/book/{pageName?}/{line:int?}/{word?}"
Run Code Online (Sandbox Code Playgroud)
在模型类中,添加与@page指令中的名称匹配的可为空的可选参数:
@page "/book/{pageName?}/{line:int?}/{word?}"
Run Code Online (Sandbox Code Playgroud)
您不知道网址的确切结构
在这种情况下,您可以使用通配符参数,在参数名称前用星号指定:
@page "/book/{*content}"
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,content将包含在 后传递的整个字符串/book/,包括正斜杠,例如page/word/5/test。然后您可以根据您的需要对其进行处理。
| 归档时间: |
|
| 查看次数: |
4659 次 |
| 最近记录: |