首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建动态路由

创建动态路由
EN

Stack Overflow用户
提问于 2022-11-27 15:05:08
回答 1查看 56关注 0票数 0

我正在尝试使用ASP.Net核心和Razor页面创建动态路由。基本上,我有两页剃须刀。一个叫做Pages/Home.cshtml,另一个叫做Pages/Calendar.cshtml。每个登录的用户都有自己的用户名。假设我的数据库中有两个用户,SamJessica,假设Sam登录并进入http://www.example.com/Sam,那么它应该呈现Pages/Home.cshtml。如果Sam登录并转到http://www.example.com/Sam/Calendar,那么它应该呈现Pages/Calendar.cshtml。如果杰西卡登录,并进入http://www.example/com/Jessica,那么它应该呈现Pages/Home.cshtml

因此,基本上,ASP.Net核心应该查看URL,并将用户名与数据库中的用户名进行比较。如果已登录用户的用户名与URL匹配,则应该呈现他们的主页。如果它们的用户名与URL不匹配,则应该沿着路由管道继续进行。我不需要你帮我处理数据库之类的事情。我只需要关于如何设置路由的帮助。

如果这一切听起来令人困惑,那就想想Facebook吧。它应该和Facebook完全一样。如果你去http://www.facebook.com/<your.user.name>,它就会显示出你的时间线。如果你去http://www.facebook.com/<your.user.name>/friends,它会显示你的朋友名单。

我基本上是在复制Facebook在ASP.Net、Core和Razor中的相同行为。有人可以提供一个简单的例子或指向我的例子吗?我觉得这样做的方法是使用一些自定义中间件或自定义路由属性,但我不确定。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-28 03:46:08

你可以做这样的事。在Program.cs/startup.cs中,像这样修改AddRazorPages

代码语言:javascript
复制
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages(options =>
{
    options.Conventions.AddPageRoute("/Index", "{user}");
    options.Conventions.AddPageRoute("/Calendar", "{user}/calendar");
});

var app = builder.Build();

现在,当您访问像https://localhost:7131/sam/calendar这样的URL时,您将得到日历页面。您可以像这样访问user变量- @RouteData.Values["user"]

在日历页面上,你可以这样做。

代码语言:javascript
复制
public class CalendarModel : PageModel
{
    public void OnGet()
    {
        var user = RouteData.Values["user"];
        //Query the calendar information from Database.
        //If empty redirect the user to the home page or something.
    }
}

您可以在这里找到更多关于此的详细信息- ASP.NET核中的剃须刀页面路由和应用程序约定

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74591103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档