Передача объекта между братьями и сестрами (компоненты) - PullRequest
0 голосов
/ 07 октября 2019

Скажем, у меня есть первый компонент, подобный этому:

<EditForm Model="@forecasts" OnValidSubmit="@HandleValidSubmit">
    <DataAnnotationsValidator />
    <ValidationSummary />
    <table class="table">
        <thead>
            <tr>
                <th>Id</th>
                <th>Date</th>
                <th>Temp. (C)</th>
                <th>Temp. (F)</th>
                <th>Summary</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var forecast in forecasts)
            {
                <tr>
                    <td><NavLink href="@($"/Edit/")">@forecast.Id</NavLink></td>
                    <td>@forecast.Date.ToShortDateString()</td>
                    <td>@forecast.TemperatureC</td>
                    <td>@forecast.TemperatureF</td>
                    <td><InputText @bind-Value="@forecast.Summary"/></td>
                </tr>
            }
                <button class="btn btn-primary" type="submit">Save</button>
        </tbody>
    </table>
</EditForm>


@code {
    List<WeatherForecast> forecasts;

    protected override async Task OnInitializedAsync()
    {
        forecasts = await Http.GetJsonAsync<List<WeatherForecast>>("https://localhost:5000/WeatherForecast/");
    }
    private async Task HandleValidSubmit()
    {
        // What should be put there???
    }
}

Теперь, поскольку я уже получил список объектов прогноза, я хочу передать один из них любому другому компоненту, например компоненту редактирования. например:

@page "/WeatherForecast/Edit/"
@inject HttpClient Http


@code {
    [Parameter]
    WeatherForecast Forecast { get; set; }


    protected override async Task OnInitializedAsync()
    {
        forecast = // **How to pass the forecast object here from the previous one** //
    }
    private async Task HandleValidSubmit()
    {
        await Http.PostJsonAsync($@"https://localhost:5000/WeatherForecast/", Forecast);
    }
}

(Действительно, будет бесполезно и бесполезно возвращать объект для издания…)

Как этого добиться с помощью Blazor? Я знаю, как передать значение и так далее, но не , как передать пользовательский объект между одноуровневыми компонентами , и на данный момент не нашел, как это сделать…

1 Ответ

0 голосов
/ 08 октября 2019

Что вам нужно, это Параметры маршрутизации .

Все компоненты имеют маршруты, но вы можете добавить дополнительный параметр в маршрут

@page "/parent"
@page "/parent/{something}"

И получить его как

[Parameter]
public string Something { get; set; }

И затем вы можете вставить NavigationManager в другой компонент и использовать его для передачи данных из одного компонента в другой

@inject NavigationManager NavigationManager

...

NavigationManager.NavigateTo("parent/" + SOME_OBJECT); 

Пожалуйста, посмотрите на некоторый связанный ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...