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 剃须刀页面中不起作用