我有一个自定义属性,我想应用到像这样的Razor页面
@attribute [PageKey("PageKeyToSearchFor")]
然后从另一个Razor页面,我想搜索我所有的Razor页,寻找一个有我正在寻找的密钥的页面
您可以从依赖项注入中获得EndpointDataSource
,它将允许您访问路由系统中的所有注册端点。
对于每个端点,您可以使用endpoint.Metadata.GetMetadata<TYourAttribute>()
方法检查属性,然后在GetMetadata
不为null的情况下与值进行比较。
注意:如果您正在查看Razor Page端点或任何其他可能被动态编译的端点,那么EndpointDataSource
中的端点可能没有您期望的所有元数据。要获得完整的元数据,您需要使用PageLoader
类(也可以从DI获得(来获得包含所有元数据的完整端点。例如:
var pageActionDescriptor = endpoint.Metadata.GetMetadata<PageActionDescriptor>();
var endpointWithFullMetadata = await pageLoader.LoadAsync(pageActionDescriptor)