首页 > 解决方案 > 如何在 Blazor 中调用带参数的函数?

问题描述

我正在与 Blazor 合作。我正在学习这个框架,但我遇到了问题。我可以调用 JavaScript 函数,但是当我调用 C# 函数时,会出现以下错误:

严重性代码 描述 项目文件行抑制状态错误 CS0411 无法从用法推断方法“RuntimeHelpers.CreateInferredEventCallback(object, Action, T)”的类型参数。尝试明确指定类型参数。

我使用 Radzen,这是我的代码块:

<td>
<RadzenDropDown AllowClear="true" @bind-Value="(() => MultipleGetUser(item.UserID))" Multiple="true" Placeholder="Select..." Data="@UserList" TextProperty="UserName" ValueProperty="UserID" Change="@(args => ChangeUser(args, ""))" />
</td>

"@bind-Value"中的此错误。如何调用带参数的函数?

标签: c#asp.net-coreblazorblazor-server-side

解决方案


您不能绑定到函数,只允许字段或属性。
@bind- 意味着它是双向的,所以你需要一些你可以设置的东西。
但是,您可以创建一个计算属性:

...
<td>
<RadzenDropDown AllowClear="true" @bind-Value="@this[item.UserID]" Multiple="true" Placeholder="Select..." Data="@UserList" TextProperty="UserName" ValueProperty="UserID" Change="@(args => ChangeUser(args, ""))" />
</td>
...
@code {
     User this[int id] // I assume you have a User class, replace by the one you use
     {
         get => MultipleGetUser(id);
         set => // as I don't how you can set your user by its Id I let you implement this code
     }

}

推荐阅读