【发布时间】:2020-04-16 14:56:46
【问题描述】:
我在 Blazor 中有一个接受方法作为参数的组件。
<SuppliersTable Loader="@LoadS" LoaderO="@LoadO" Adder="@Add" Updater="@Update" Remover="@Remove" />
@code {
async Task<List<Supplier>> LoadS() => (await ModelServiceS.GetAllAsync()).ToList();
async Task<List<Operator>> LoadO() => (await ModelServiceO.GetAllAsync()).ToList();
async Task<bool> Add(Supplier model) => await ModelServiceS.AddAsync(model);
async Task<bool> Update(Supplier model) => await ModelServiceS.UpdateAsync(model);
async Task<bool> Remove(Supplier model) => await ModelServiceS.RemoveAsync(model);
}
但是如果你不把“@”放在方法名前面,它会做完全不同的事情吗?编译器接受两种方式,这就是我要问的原因。我的感觉是,使用“@”它执行方法并将返回值作为参数传递,而没有“@”,您只是引用父组件调用的方法(这是我想要的)。有人可以向我提供有关“@”用法的更多详细信息吗?
SuppliersTable组件的参数类型如下:
[Parameter] public Func<Task<List<Supplier>>> Loader { get; set; }
[Parameter] public Func<Task<List<Operator>>> LoaderO { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Adder { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Updater { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Remover { get; set; }
【问题讨论】:
标签: c# asp.net-core blazor blazor-server-side