Razor Pages 自定义页面路由

AT-2017

这个问题之前已经被问过,因为我是新手Razor Pages,无法弄清楚我如何才能做到这一点(愚蠢的)。所以这里是:我有一个razor page显示数据列表的地方,我必须在其中制作页面路由或网址,如下所示:

@foreach (var item in Model.Data)
{
  <a href="./search_details/id/@item.Id">@item.Name @item.City @item.State</a>
} 

非常简单,所以在 中Startup.cs,我尝试执行以下操作以使其工作。不幸失败:

//This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddMvc();
    services.AddEntityFrameworkSqlite().AddDbContext<MyDbContext>();
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddMvc().AddRazorPagesOptions(options =>
    {
        //Here is the configured routing that I tried
        options.Conventions.AddPageRoute("/search_details", "/search_details/id");
    });
}

我想将 url 返回为./search_details/id/1002并在后端执行此操作以获取查询字符串值:

string id = this.RouteData.Values["id"].ToString();

这是非常基本的,但正如我所说的失败(失败意味着在后端,查询字符串在调试时不会命中)。我还有一个场景,这件事现在最困扰我。我的要求也是隐藏页面名称。像这样的东西:

localhost:8080/search_details/id/1002

localhost:8080/1002

有没有合适的方法可以做到这一点?我知道这对于其他目的来说是一种不好的做法,但就目前而言,我会接受它。

注意:除非没有替代方案,否则我不愿意在客户端这样做。如果可能,最好在服务器端使用C#.

Nan Yu

您可以在 Razor 页面中使用路由模板:

https://www.learnrazorpages.com/razor-pages/routing

注释掉这一行options.Conventions.AddPageRoute,并在您的search_details页面中添加可为空的参数:

@page "{id?}"

在 cs 文件中,您可以获得如下路线数据:

public void OnGet(string id)
{

}

对于第二个要求,您可以添加如下模板:

options.Conventions.AddPageRoute("/search_details", "{id}");

所以这localhost:8080/1002将重定向到search_details页面,您也将获得id路由数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ServiceStack Razor内容页面的自定义路由

路由到 Razor Pages 中的属性

带有前缀 id 的 Razor Pages 路由

自定义路由到ASP.Net Core 2.1中的关于Razor页面

Blazor安全性-Razor Pages自定义身份验证/安全性

ASP.NET Razor Pages 向呈现的 HTML 代码添加自定义属性

Razor Pages 自定义标签助手 2 路绑定

集合可以绑定到Razor Pages中的页面模型吗?

Razor Pages 在页面加载时设置当前日期

使用 Razor Pages 在路线中间定义所需的路径参数?

有没有办法在 ASP.NET Core 2.1 中捕获对 Razor Pages 的非现有自定义处理程序的 HTTP 请求?

无法使用 Razor 页面(net core 3.1)将错误重定向到自定义页面

自定义路由未在Razor视图中呈现面包屑

使用AJAX删除Razor Pages

Razor Pages Post 返回 400

在 Github Pages 中删除自定义页面后,原始页面不起作用

如何全局设置自定义 HtmlEncoder 以在所有 Razor 页面中使用?

Razor Pages 路由只使用一个参数,而不是两个

根据 Razor Pages 中的路由有条件地呈现 html

ASP .NET Core 2.1 Razor Pages锚标记帮助器为ASP路由生成空的href

在Blazor中,如何在Pages目录中检索所有可路由的Razor组件名称?

部署站点上的Razor Pages / ASP.NET CORE路由问题(404错误)

有没有办法使用 Razor Pages 进行动态路由?

Razor Pages - 是否可以路由到视图组件以进行 AJAX 刷新

授权Razor Pages中的Tag Helper作为页面处理程序方法

Razor页面可以进入Pages之外的任何其他目录吗?

AJAX调用会在Razor Pages中重新加载我的整个页面吗?

ASP.NET Core Razor Pages 中的 return Page() 在通过 RedirectToPage 调用后不呈现页面

Razor Pages:内部带有局部视图的页面。如何存储部分视图的数据?