首页 > 解决方案 > .net 核心中俱乐部的根个人资料页面

问题描述

对于俱乐部页面,我想为他们提供如下网址。我也在使用 .net 5 和 ef 核心。

我将每个俱乐部的网址存储在数据库中,这是俱乐部名称字段的条纹版本。

www.yoursite.com/clubpage

我有一个带有 action 方法的控制器 obv,控制器称为 ClubController.cs

public async Task<IActionResult> Index(string url) {
  var club = _context.Clubs
  .Where(w => w.isActive == true && w.Url == url && w.isDeleted == 
   false).ToList();
}

问题是我的配置映射中需要什么来允许 url 样式但仍允许其他控制器运行

我可以有多个 useend 点声明吗?或者我是否因为不仅有www.yoursite.com/club/clubpage而过于复杂?

我的启动配置。

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
    name: "areas",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");


    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});
}

如果我应该做后者,为什么我的参数必须始终是 Id?

    public async Task<IActionResult> Index(string url) {
        return (IActionResult)_context.Clubs.Where(w => w.isActive == true && w.Url == url && w.isDeleted == false).FirstOrDefault();            
    }

编辑 2 好的,这让我到达了我需要去的地方,但他们是不是更进一步,只删除俱乐部的名字?

endpoints.MapControllerRoute(name: "club",
 pattern: "club/{clubname?}",
 defaults: new { controller = "Club", action = "Index" });

当我有这个时,我仍然希望俱乐部能够说 /Club/Timeline 但上面的根也没有分配给我它只是继续索引。

编辑 3

如果我执行以下操作,它可以让我同时拥有两种情况,但我觉得我不需要同时做这两种情况?

endpoints.MapControllerRoute(name: "TimeLine",
  pattern: "Club/TimeLine/{clubname?}",
  defaults: new { controller = "Club", action = "ClubTimeLine" });

endpoints.MapControllerRoute(name: "Club",
  pattern: "Club/{clubname?}",
  defaults: new { controller = "Club", action = "Club" });

标签: c#asp.net-core

解决方案


推荐阅读