在 ASP.NET Core 中调试页面路径

问题描述 投票:0回答:1

我在调试场景时遇到一些问题,并且想测试特定页面路径是否存在。有没有办法验证 Razor 页面是否存在(在调用 RedirectToPage 之前/之后)?

具体场景是尝试从 mvc 控制器中的 Post 方法内部调用

RedirectToPage
,以转到 Razor 页面。然而,它并没有进入页面,而是简单地进入了Get方法(因为页面的相对路径不正确)。

我尝试调用以下代码来查看是否可以在该路径找到该页面:

var user = await _userManager.GetUserAsync(User);
var pageLoader = HttpContext.RequestServices.GetService(typeof(PageLoader)) as PageLoader;
var pad = new PageActionDescriptor();
pad.RelativePath = "/Path/To/Razor/Page";
var page = await pageLoader.LoadAsync(pad);

但这就死掉了,没有任何有用的例外。我搜索了其他方法来查明代码中是否存在页面,但找不到方法。

编辑:理想情况下,我想要这样的伪代码

var isValidPath = ValidateRazorPage("Path/To/Page", "PageAreaGoesHere");
if(isValidPath)
   return RedirectToPage("Path/To/Page", new {area= "PageAreaGoesHere"});
else
  DoErrorHandlingToFigureOutIssue();
c# asp.net-core razor-pages
1个回答
0
投票

IEnumerable<EndpointDataSource>
注入您的页面/服务

private readonly IEnumerable<EndpointDataSource> _endpoints;

public IndexModel(IEnumerable<EndpointDataSource> endpoints)
{
    
    _endpoints = endpoints; 
}

然后您可以使用以下代码获取路径:

 var eps = _endpoints.SelectMany(es => es.Endpoints).OfType<RouteEndpoint>();
 var  paths=eps.Select(x=>x.RoutePattern.RawText).ToList(); 

它在我这边效果很好:

© www.soinside.com 2019 - 2024. All rights reserved.