首页 > 解决方案 > Blazor Blazored.Typeahead 组件在清除文本框后引发异常

问题描述

嗨,我正在尝试解决这个问题一段时间,但似乎没有任何工作我在我的项目中使用了 BazloredTypeahead 组件。我正在从我的模型中投标对象,我正在使用模板来获取我的对象字符串表示

这是我的代码的一些表示:

<EditForm Model="@ReservationModel" OnValidSubmit="@Submit">
    <FluentValidationValidator/>
    @if (ClientList != null && ClientList.Any())
    {
        <BlazoredTypeahead SearchMethod="ClientSearch" @bind-Value="ReservationModel.Client" >
            <SelectedTemplate Context="template">
                @template.GetAutocompleteValue()
            </SelectedTemplate>
            <ResultTemplate Context="template">
                @template.GetAutocompleteValue()
            </ResultTemplate>
            <NotFoundTemplate>
                Client not found
            </NotFoundTemplate>
        </BlazoredTypeahead>
    }
    <br/>
        <div class="col-12 row">
        <span class="col-2"></span>
        <input type="submit" class="form-control col-2 btn btn-primary" value="Submit"/>
    </div>
</EditForm>

该组件默认有一个清晰的图标,每次单击它时都会出现此异常。

在此处输入图像描述

Error: System.ArgumentNullException: Value cannot be null. (Parameter 'model')
   at Microsoft.AspNetCore.Components.Forms.FieldIdentifier..ctor(Object model, String fieldName)
   at Microsoft.AspNetCore.Components.Forms.FieldIdentifier.Create[TField](Expression`1 accessor)
   at Microsoft.AspNetCore.Components.Forms.ValidationMessage`1.OnParametersSet()
   at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()
   at Microsoft.AspNetCore.Components.ComponentBase.SetParametersAsync(ParameterView parameters)
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)
   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.UpdateRetainedChildComponent(DiffContext& diffContext, Int32 oldComponentIndex, Int32 newComponentIndex)
   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForFramesWithSameSequence(DiffContext& diffContext, Int32 oldFrameIndex, Int32 newFrameIndex)
   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
   at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
e.log @ blazor.server.js:19

我确定我的对象最初不为空。

我的 GetAutocompleteValue 方法:

    public static string GetAutocompleteValue(this Client client)
    {
        return client == null ? string.Empty : $"{client.FirstName} {client.LastName} - {client.PhoneNumber}";
    }

所以一切正常,直到我点击“X”。我对不同的组件(旧问题)有同样的问题,但似乎异常正在跟随我:(我会给予任何帮助。

标签: c#asp.net-coreweb-applicationsblazorblazored

解决方案


推荐阅读