首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >blazor中参数的传递方法

blazor中参数的传递方法
EN

Stack Overflow用户
提问于 2022-05-18 18:34:51
回答 2查看 526关注 0票数 0

我正在将一个方法从父级Blazor组件传递到一个子组件中。

父定义如下所示:

代码语言:javascript
运行
复制
public bool AddOrUpdate(MyModel myModel)
{ 
    // do stuff
        
    return true;
} 

ChildComponent.razor.cs中,如下所示:

代码语言:javascript
运行
复制
[Parameter]
public EventCallback<MyModel> SaveMethod { get; set; } 

它从父母那里传给孩子,就像:

代码语言:javascript
运行
复制
<ChildComponent SaveMethod="@AddOrUpdate" />

当我调用子程序中的方法时,

代码语言:javascript
运行
复制
SaveMethod(newNote);

它抛出:

Non invocable member cannot be used like a method

有什么问题吗?

编辑:使用invoke帮助我通过了最初的错误,但现在我看到的是CS1503 Argument 2: cannot convert from 'method group' to 'EventCallback'

EN

回答 2

Stack Overflow用户

发布于 2022-05-18 18:59:21

SaveMethod是一个属性。相反,您应该使用SaveMethod.InvokeAsync(newNote); (如果您在异步方法中,则添加await )。

了解更多关于事件回调这里的信息。

票数 0
EN

Stack Overflow用户

发布于 2022-05-18 21:27:34

这不是火箭科学。将EventCalback方法模式与指定的方法匹配,然后它就能工作了。

以下是Enet答案的完整版本:

模型。

代码语言:javascript
运行
复制
    public class MyModel
    {
        public string? Name { get; set; }
    }

组件

代码语言:javascript
运行
复制
<button @onclick="SaveModel">Save</button>

@code {
    private MyModel _myModel => new MyModel() { Name= $"clicked at {DateTime.Now.ToLongTimeString()}" };

    [Parameter]
    public EventCallback<MyModel> SaveMethod { get; set; } 

    private void SaveModel()
    {
        // Invoke the parent's AddOrUpdate, passing it an instance of 
        // MyModel 
        SaveMethod.InvokeAsync(_myModel);
    } 
}

和索引页面演示

代码语言:javascript
运行
复制
@page "/"

<PageTitle>Index</PageTitle>

<MyComponent SaveMethod="this.AddOrUpdate" />

<div class="p-2">
    @model.Name
</div>

@code {
    MyModel model = new MyModel();

    public void AddOrUpdate(MyModel myModel)
    {
        model = myModel;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72294360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档