c# - Asp.net Core 3.1-如何从控制器返回到 Razor 页面?
问题描述
我想当用户登录网站时,在剃须刀页面中转到我想要的地址...
if (rolename == "User")
{
return RedirectToPage("Dashboard","Profile");
}
此代码无法正常工作...
这是错误消息:
InvalidOperationException:相对页面路径“仪表板”只能在执行 Razor 页面时使用。使用前导“/”指定根相对路径以在 Razor 页面之外生成 URL。如果您使用的是 LinkGenerator,那么您必须提供当前的 HttpContext 才能使用相关页面。
怎么能做到这一点?
解决方案
RedirectToPage 有多个具有不同参数的方法,您所做的与以下方法有关:
//
// Summary:
// Redirects (Microsoft.AspNetCore.Http.StatusCodes.Status302Found) to the specified
// pageName using the specified pageHandler.
//
// Parameters:
// pageName:
// The name of the page.
//
// pageHandler:
// The page handler to redirect to.
//
// Returns:
// The Microsoft.AspNetCore.Mvc.RedirectToPageResult.
[NonAction]
public virtual RedirectToPageResult RedirectToPage(string pageName, string pageHandler);
在你的情况下,它应该是:
return RedirectToPage("/Profile/Dashboard");
另外,一定要添加剃须刀页面路由:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Privacy}/{phrase?}");
endpoints.MapRazorPages();
});
}
推荐阅读
- php - 将 PHP 多维数组打印为 HTML 列表
- swiper - 如何在 onTouchStart 处理程序中禁用 SwiperJS 对活动元素的模糊调用?
- c# - 使用 ProcessStartInfo 从 C# 到 PowerShell 的 SecureString 密码
- python - 我们可以安排 Selenium(Python) 程序在 Windows 中每 5 分钟运行一次吗?
- grid - TailwindCSS:如何在网格中从右侧添加元素?
- authentication - 成功登录后,我想重定向到我登录前的屏幕。getLoginRedirect() 不起作用
- c++ - 在 CPP 控制台中打印彩色 ascii 艺术
- javascript - 根据所选的下拉城市显示 google 地方自动完成
- java - 为什么我的最后一个索引不应该有一个值?
- python - 当真正的循环不起作用时在里面增加