. net core Blazor визуализирует cs html компонент частичного представления динамически - PullRequest
0 голосов
/ 03 августа 2020

В моем компоненте blazor .razor у меня есть этот код ...

... stuff ...

@HistoricDeck

... stuff ...

@code
{
    protected GameDataModel GameData { get; set; }

    protected RenderFragment HistoricDeck { get; set; }

    protected async Task LoadDeck(FriendSupportModel deck, DeckType type)
    {
        HistoricDeck = builder =>
        {
            var deckFragment = new SupportDeck() {
                GameData = GameData,
                AssetList = GameData.AssetList,
                Deck = deck.normalDeck,
                Type = DeckType.Standalone,
            };
            builder.OpenElement(0, "div");
            builder.AddAttribute(1, "SupportDeck", deckFragment);
            builder.CloseElement();
        };
        StateHasChanged();
    }
}

LoadDeck вызывается событием @onclick= на странице, я использую sh для динамического рендеринга нового SupportDeck () на страницу. Как мне это сделать? Приведенный ниже код не работает (например, точки останова в SupportDeck.cs html не выполняются).

SupportDeck.cs html .cs:

public class SupportDeck
{
    public FriendServantListModel Deck { get; set; }
    public DeckType Type { get; set; }
    public GameDataModel GameData { get; set; }
    public AssetList AssetList { get; set; }
}

SupportDeck. cs html:

@model Project.Views.Shared.SupportDeck
... stuff ...
@if (Model.Deck != null) {
<p>Hello world</p>
}
... stuff ...

Вот как я обычно визуализирую этот фрагмент представления на странице без Blazor:

@{
    await Html.RenderPartialAsync("SupportDeck", new SupportDeck
    {
        Deck = Model.FriendSupport.normalDeck,
        Type = DeckType.Normal,
        GameData = Model.GameData,
        AssetList = Model.AssetList
    });
}

1 Ответ

0 голосов
/ 03 августа 2020

Решено преобразованием .cshtml в шаблон .razor, а затем это:

        HistoricDeck = builder =>
        {
            builder.OpenComponent(0, typeof(SupportDeckItem));
            builder.AddMultipleAttributes(1, new Dictionary<string, object>() {
                {"Deck", deck},
                {"Type", deckType},
                {"GameDataItem", gameData},
                {"AssetList", gameData.AssetList}
            });
            builder.CloseComponent();
        };
        StateHasChanged();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...