【问题标题】:Passing route parameters in .Net Core razor pages在 .Net Core razor 页面中传递路由参数
【发布时间】: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


    【解决方案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。然后,您可以根据需要对其进行处理。

    【讨论】:

    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2020-05-06
    • 2020-04-26
    • 2020-04-03
    相关资源
    最近更新 更多