【问题标题】:Use a route parameter in an attribute in a blazor server page在 Blazor 服务器页面的属性中使用路由参数
【发布时间】:2021-09-23 13:10:41
【问题描述】:

我在一个 blazor-server 应用程序上写这个页面:

@page "/pageurl/{param:int}"
@attribute [AnAttribute(param)]

<div>@param</div>

@code
{
   [Parameter]
   public int param { get;set; }
}

如您所见,我试图将参数作为属性的参数传递。这没用。可能是因为在运行属性时,blazor 没有解析参数。

如何使用页面参数作为属性参数?

谢谢

【问题讨论】:

  • 是否尝试在代码后面设置属性?
  • 是的,同样的问题
  • 属性通常用于创建编译时元信息。您正在使用的属性将应用于页面类级别。你能提供你的实际用例吗?这对找到解决方案会更有用。
  • 你用这个属性做什么?
  • 出于安全原因。我想检查用户是否可以为此参数访问此页面

标签: asp.net-core blazor blazor-server-side


【解决方案1】:

属性的参数必须在编译时已知。 (硬编码) 无论是 RazorPage 还是其他类都没有区别。

解决此问题的唯一方法可能是反射。

【讨论】:

  • 谢谢,你能解释一下我该怎么做吗?
  • 用反射创建一个类型的实例是最简单的部分。但我认为将其集成到应用程序本身会很棘手。也许你会在类似应用程序代码库的“CMS”中找到灵感。
  • 谢谢,但我不明白你在这种情况下的反射是什么意思
  • 借助反射,可以在运行时动态创建类型等。 razor/blazor 页面是一个类,因此您可以通过反射来组装页面。 (docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…)。
  • 好的,但在我的情况下,无法访问 url 和参数...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
相关资源
最近更新 更多