【问题标题】:How to Call a Function with a Parameter in Blazor?如何在 Blazor 中调用带参数的函数?
【发布时间】:2020-09-20 20:25:34
【问题描述】:

我正在使用 Blazor。我正在学习这个框架,但我遇到了问题。我可以调用一个 JavaScript 函数,但是当我调用一个 C# 函数时,我得到了这个错误:

严重性代码描述项目文件行抑制状态 错误 CS0411 方法的类型参数 'RuntimeHelpers.CreateInferredEventCallback(对象,动作,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-core blazor blazor-server-side


    【解决方案1】:

    您不能绑定到函数,只允许字段或属性。
    @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
         }
    
    }
    

    【讨论】:

    • 感谢您的回答。但是,当我尝试创建类广告时,我在 int 上出错并获取、设置。 “错误的数组声明器:要声明托管数组,排名说明符位于变量标识符之前。要声明固定大小的缓冲区字段,请在字段类型之前使用 fixed 关键字。”
    • 哎呀,我的错,我丢失了我的 C#
    • 我改的时候没有报错。但是,我在运行应用程序时;我接受这个错误:“无效的表达式术语'['”。 "
    • 试试@this[item.UserID]
    • 感谢您的回答和信息。这是工作。
    猜你喜欢
    • 2016-11-13
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2017-12-25
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多