Blazor:将复杂类型作为参数传递

时间:2019-10-08 18:29:10

标签: blazor blazor-client-side

我正在尝试对我的简单应用程序进行组件化,并且所有内容都在一个组件中,并且一切正常。但是,当我将按钮逻辑移到它自己的子组件中并从主要组件中移出时,会得到以下内容

Unable to set property 'story' on object of type 'Shared.ChoiceButton'. The error was: Specified cast is not valid. ---> System.InvalidCastException: Specified cast is not valid

我可以看到这是一个转换错误,但是当我尝试使用基元进行相同的操作时,它可以工作。我不知道要使用复杂类型的什么技巧?

父组件

 <div id="choices">
        @foreach (var choice in story?.currentChoices)
        {
            <ChoiceButton story="@story" choice="@choice" />
        }
 </div>

@code {
    public Story story;

    protected override async Task OnInitializedAsync()
    {
        story = new Story(await Http.GetStringAsync("sample-data/Deamons.json"));
    }
}

我的新子组件(ChoiceButton)

<button class="choiceButton" @onclick="() => Choose(choice)">@choice.text</button>

@code {

    [Parameter] public Story story { get; set; }
    [Parameter] public Choice choice { get; set; }

    void Choose(Choice choice)
    {
        story.ChooseChoiceIndex(choice.index);
        story.ContinueMaximally();
    }
}

0 个答案:

没有答案