繁体   English   中英

ASP.NET CORE Razor 中的路由 带搜索参数的页面

[英]Routing in ASP.NET CORE Razor Pages with search parameters

您如何使用如下搜索字符串处理 razor 页面中的路由:https://localhost:5000/link?searchParam1=daniel&searchParam2=olu&Keyword=keyword。 在 Razor 页面中,您可以在 razor.chshtml 文件的顶部添加所需的路由,如下所示:

@page "/preferedroute"
@model Index
@{

}

如何使用上面的搜索字符串执行此操作。 它有多个参数。 如何将其转换为首选路线,以便其他页面可以访问它。 我有一个提交到页面的表单。

<form class="form-inline" id="form" action="preferedroute">
<input id="searchParam1 value="dan">
 <input id="searchParam2 value="olu">
 <input id="keyword value="keyword">
</form> 

当我将此表单提交到页面时,它会像这样提交:

https://localhost:5000/link?searchParam1=daniel&searchParam2=olu&Keyword=keyword

但我需要它像这样提交:https://localhost:5000/link/searchParam1/daniel/searchParam2/olu/Keyword=keyword

现在的问题是我在共享的 _layout.cshtml 文件中有这个表单。 所以我不能像这样使用标签助手(asp-for),因为它没有页面 model:

  <form class="form-inline" id="form" action="preferedroute">
    <input asp-for="searchParam1" value="dan" >
     <input asp-for="searchParam2 value="olu">
     <input asp-for="keyword value="keyword">
    </form> 

当表单无法使用标签助手时,如何完成所需的结果?

您如何使用如下搜索字符串处理 razor 页面中的路由:https://localhost:5000/link?searchParam1=daniel&searchParam2=olu&Keyword=keyword

您可以参考以下代码片段来绑定和处理搜索词。

public class LinkModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public SearchTerms searchTerms { get; set; }
    public void OnGet()
    {
        var searchParams = searchTerms;

        //...
        //code logic here
        //...
    }
}

SearchTerms

public class SearchTerms
{
    public string searchParam1 { get; set; }
    public string searchParam2 { get; set; }
    public string keyword { get; set; }
}

测试结果

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM