[ad_1]
2 つのネストされたコンポーネント (AlphabeticSearch と ParameterSearch) を持つメイン ページの AreaOfLaw コンポーネントがあります。2 つのネストされたコンポーネントのボタン クリックを使用して、メイン ページ コンポーネントのネストされたコンポーネントからパラメータ プロパティ値が必要です。 以下は、メイン ページのコード、AreaOfLaw.razor、および 2 つのネストされたコンポーネントです。
ネストされたコンポーネントで宣言されたパラメーター プロパティの値で、メイン フォームの検索入力を使用する必要があります。 現在、別のクラスの静的プロパティが機能していますが、それが最善だとは思いません。
前もって感謝します。
私が試したこと:
AreaOfLaw.razor:
HTML
<MudGrid Justify="Justify.Center"> <AlphabeticSearch AlphabetChanged="OnSearchAlphabet" /> <ParameterSearch ParameterChanged="OnSearchParameter" /> </MudGrid>
@コード {
private void OnSearchAlphabet() { GetAreaOfLawByAlpahbet(); } private void OnSearchParameter() { GetAreaOfLawByParameter(); } private void GetAreaOfLawByAlpahbet() { if(AppProperties.AlphabeticSelection != null) AreaOfLaws = Services.AreasOfLaw.ReadByAlphabets.Read(AppProperties.AlphabeticSelection); } private void GetAreaOfLawByParameter() { AreaOfLaws = Services.AreasOfLaw.ReadByAny.Read(AppProperties.SearchParameter); }
}
ネストされたコンポーネント
AlphabeticSearch.razor
<MudItem xs="6"> <MudCard> <MudCardContent> <MudText>Search by starting alphabet</MudText> <MudSelect @bind-Value="EnumValue" Label="Select an alphabet" AdornmentColor="Color.Secondary"> @foreach (Alphabets item in Enum.GetValues(typeof(Alphabets))) { <MudSelectItem Value="@item">@item</MudSelectItem> } </MudSelect> </MudCardContent> <MudCardActions> <MudButton Variant="MudBlazor.Variant.Outlined" Color="Color.Secondary" OnClick="OnSearchAlphabet">Search Now</MudButton> </MudCardActions> </MudCard>
@code { public enum Alphabets { A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z }; private Alphabets EnumValue { get; set; } = Alphabets.A; [Parameter] public EventCallback<string> AlphabetChanged { get; set; } [Parameter] public string? SelectedAlphabet { get; set; } private void OnSearchAlphabet() { AppProperties.AlphabeticSelection = EnumValue.ToString(); //--This is a static property. Not good. I want the value SelectedAlphabet on the main page. AlphabetChanged.InvokeAsync(SelectedAlphabet = EnumValue.ToString()); } }
解決策 1
使用する必要があります CascadingParameter
. チェックアウト: ASP.NET Core Blazor カスケード値とパラメーター | マイクロソフト ラーン[^] と Blazor University – カスケード値[^]
[ad_2]
コメント