我有一个父页面,在那里我有:

<CascadingValue Value="SelectedAddress">
    <CollectionAddress VendorNumber="@VendorNumber"></CollectionAddress>
</CascadingValue>

而这背后的代码有:

 public AddressDTO SelectedAddress { get; set; } = new AddressDTO();

我的子组件具有

 [CascadingParameter]
 protected AddressDTO? SelectedAddress { get; set; }

在子组件中,我设置了SelectedAddress,但当我切换回父组件时,SelectedAddress为空.如果我用错了,这是我第一次try 使用级联参数.

推荐答案

实际上情况正好相反.CascadingValue用于将数据从父组件发送给子组件(通常向下多个级别).如果要将数据从子对象发送到父对象,请使用EventCallback参数,如下所示:

Parent

@page "/"

<CollectionAddress AddressChanged="AddressRecieved" />
@addressStree

@code {
    private string addressStree;
    public AddressDTO SelectedAddress { get; set; } = new AddressDTO()
        {
            Street = "Garden"
        };

    private async Task AddressRecieved(AddressDTO address)
    {
        addressStree = address.Street;
    }
}

Child

<h3>Collection Address</h3>
<button @onclick="SendAddress">Change Adddress</button>

@code {
    //[CascadingParameter]
    //protected AddressDTO? SelectedAddress { get; set; }

    [Parameter]
    public EventCallback<AddressDTO> AddressChanged { get; set; }

    private async void SendAddress()
    {
        await AddressChanged.InvokeAsync(new AddressDTO { Street = "Garden" });
    }
}

Dto

   public class AddressDTO
    {
        public string? Street { get; set; }
    }

Csharp相关问答推荐

SortedSet.IsSubsetOf未按预期工作

读取配置文件(mytest. exe. config)

Unity中的刚体2D运动

将XPS转换为PDF C#

使用C#中的SDK在Microsoft Graph API上使用SubscribedSkus的问题

当前代码Cosmos DB 3.37.1:PartitionKey key key mismatch exception

在swagger示例中添加默认数组列表

为什么AggregateException的Catch块不足以处理取消?

TagHelpers在新区域不起作用

.NET:从XPath定位原始XML文档中的 node

RX操作员使用先前值进行扫描,信号来自值本身

如何在GRPC代码First服务的返回类型上使用多态性?

Azure函数-在外部启动类中生成配置时出错

Celler ArgumentExpression是否期望在所有情况下都捕获允许空值的运算符?

KeyDown从我的文本框中删除输入,如何停止?

在ObservableCollection上使用[NotifyPropertyChangedFor()]源代码生成器不会更新UI

Xamarin.Forms项目中缺少MainPage.xaml

.NET8支持Vector512,但为什么向量不能达到512位?

通过mini kube中的远程调试Pod与从emoteProcessPickerScript中解析错误输出的代码错误进行比较

如何根据分割文本的块数来计算文本的大小?