Blazor 3.1 组件标记帮助程序参数

ala*_*ned 4 parameters components blazor

我尝试使用 3.1 中的新标签助手将参数传递到 razor 页面上的 Blazor 组件,它适用于整数类型,但如果我更改为字符串,则会引发错误。我缺少什么?

成分:

<p>Test Parameter: @TestParameter</p>

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

}
Run Code Online (Sandbox Code Playgroud)

剃刀页面:

@page "/test"
@model BlazorTest.testModel
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>test</title>
</head>
<body>

  <component type="typeof(TestComponent)" render-mode="ServerPrerendered" param-TestParameter="20" />

  <script src="~/_framework/blazor.server.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

将组件更改为以下原因:

InvalidCastException:无法将类型“System.Int32”的对象转换为类型“System.String”。

<p>Test Parameter: @TestParameter</p>

@code {
  [Parameter]
  public string TestParameter { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

Isa*_*aac 6

你应该做这个:

 <p>Test Parameter: @TestParameter</p>

@code {
    [Parameter]
    public string TestParameter { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

和这个:

<app>
        @{
            var val = "Hello world";
        }
        <component type="typeof(TestComponent)" render-mode="ServerPrerendered" param-TestParameter="@(val)" />
    </app>
Run Code Online (Sandbox Code Playgroud)

这只是一个有根据的猜测,您应该使用 var 定义所需类型的变量,然后让它在 Razor 表达式中进行计算。因此,如果你的参数属性传递了一个整数,你应该像这样:

  @{
        var val = 120;
   }
Run Code Online (Sandbox Code Playgroud)