C# Asp.net Core 3.1-如何从控制器返回Razor页面?
我想当用户登录到该网站时,转到razor页面中我想要的地址C# Asp.net Core 3.1-如何从控制器返回Razor页面?,c#,asp.net-mvc,asp.net-core,model-view-controller,razor-pages,C#,Asp.net Mvc,Asp.net Core,Model View Controller,Razor Pages,我想当用户登录到该网站时,转到razor页面中我想要的地址 if (rolename == "User") { return RedirectToPage("Dashboard","Profile"); } 此代码无法正常工作 以下是错误消息: InvalidOperationException:相对页面路径“Dashboard”只能在执行Razor页面时使用。
if (rolename == "User")
{
return RedirectToPage("Dashboard","Profile");
}
此代码无法正常工作
以下是错误消息:
InvalidOperationException:相对页面路径“Dashboard”只能在执行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");
此外,请确保添加razor页面路由:
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();
});
}
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");
此外,请确保添加razor页面路由:
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();
});
}
你好@AliKhansari,错误消息是什么?您是否尝试本地重定向(“/Dashboard/Profile”)?@Sasaman是的,不是work@Rena
InvalidOperationException:相对页面路径“Dashboard”只能在执行Razor页面时使用。指定具有前导“/”的根相对路径,以在页面外部生成URL。如果您使用的是LinkGenerator,则必须提供当前的HttpContext才能使用相关页面。
@AliKhansari您可以向我们展示您的项目结构吗?页面和控制器,您的启动类…嗨@AliKhansari,错误消息是什么?您是否尝试本地重定向(“/Dashboard/Profile”)?@Sasaman是的,不是work@RenaInvalidOperationException:相对页面路径“Dashboard”只能在执行Razor页面时使用。指定具有前导“/”的根相对路径,以在页面外部生成URL。如果您使用的是LinkGenerator,则必须提供当前的HttpContext才能使用相关页面。
@AliKhansari您可以向我们展示您的项目结构吗?页面和控制器,您的启动类。。。