ASP.net core 3.1 中控制器和剃须刀页面之间的路由

Posted

技术标签:

【中文标题】ASP.net core 3.1 中控制器和剃须刀页面之间的路由【英文标题】:Routing between a controller and razor page in ASP.net core 3.1 【发布时间】:2020-07-11 09:51:00 【问题描述】:

我正在尝试从主控制器中的操作方法路由到剃须刀页面。正确的方法是什么?

public async Task<IActionResult> CreateRoom(string name)

  db.Chats.Add(new Chat
    
      Name = name,
      Type = ChatType.Room
    );
    await _db.SaveChangesAsync();
    return Redirect("../Pages/Index");
  

【问题讨论】:

【参考方案1】:

使用“RedirectToPage”方法重定向到 asp.net core 中的 Razor 页面。

RedirectToPage 方法返回一个新的 RedirectToPageResult 实例(ActionResult 的一种形式)。 RedirectToPage 方法是 PageModel 附带的辅助方法,有助于消除编写动作结果的新实例并简化代码的需要。

 public async Task<IActionResult> CreateRoom(string name)
    
        _db.Chats.Add(new Chat
        
            Name = name,
            Type = ChatType.Room
        );
        await _db.SaveChangesAsync();
        return RedirectToPage("Index");//assuming you have the Index page in Pages folder
    

fyi,RedirectToPage 也有重载,您可以根据需要使用它。

上面的代码和下面的效果一样。

 public async Task<IActionResult> CreateRoom(string name)
    
        _db.Chats.Add(new Chat
        
            Name = name,
            Type = ChatType.Room
        );
        await _db.SaveChangesAsync();
        return new RedirectToPageResult("Index");
    

【讨论】:

以上是关于ASP.net core 3.1 中控制器和剃须刀页面之间的路由的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net Core 3.1-如何从控制器返回到 Razor 页面?

路由覆盖在 asp.net core 3.1 剃须刀页面中不起作用

Asp.Net Core 中控制器方法中的绑定 Guid

ASP.NET Core 3.1 Razor 页面路由不明确匹配异常

Asp.Net Core 3.1 控制器方法未调用

ASP.Net Core 3.1 - 从控制器向部分视图模态传递值?