Matblazor - 在 EditForm 中使用 MatStringField 会导致异常

问题描述

以下视图产生错误

<AuthorizeView>
    <Authorized>
        <EditForm Model="SettingsDto" OnValidSubmit="SaveSettings" Context="formContext">
            <p>
                <MatStringField disabled="true" Value="@context.User.Identity.Name" Label="Contact email" Icon="mail_outline" FullWidth="true"></MatStringField>
            </p>
            <p>
                <MatTextField @bind-Value="@SettingsDto.ProductName" Label="Product Name" FullWidth="true" required="true"></MatTextField>
            </p>
            <MatButton Raised="true" Type="submit">Save</MatButton>
        </EditForm>
    </Authorized>
</AuthorizeView>

我可以通过像这样将 MatStringField 移到 EditForm 之外轻松解决这个问题:

<AuthorizeView>
    <Authorized>
        <p>
            <MatStringField disabled="true" Value="@context.User.Identity.Name" Label="Contact email" Icon="mail_outline" FullWidth="true"></MatStringField>
        </p>
        <EditForm Model="SettingsDto" OnValidSubmit="SaveSettings" Context="formContext">
            <p>
                <MatTextField @bind-Value="@SettingsDto.ProductName" Label="Product Name" FullWidth="true" required="true"></MatTextField>
            </p>
            <MatButton Raised="true" Type="submit">Save</MatButton>
        </EditForm>
    </Authorized>
</AuthorizeView>

但是查看文档 disabled and ReadOnly 文本字段使用 MatStringField,我找不到任何使用 EditFormdisabled 的示例。如何在 MatStringField 中呈现禁用的 EditForm

我无法使用 <MatStringField disabled="true" @bind-Value="@context.User.Identity.Name"。这将导致以下构建错误

CS0200 属性或索引器“IIdentity.Name”无法分配给 -- 它是只读的

https://www.matblazor.com/TextField

https://www.matblazor.com/EditContext

错误

blazor.webassembly.js:1 暴击: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常呈现组件:MatBlazor.MatStringField 需要“ValueExpression”的值 范围。通常这是在使用时自动提供的 '绑定值'。 system.invalidOperationException: MatBlazor.MatStringField 需要“ValueExpression”的值 范围。通常这是在使用时自动提供的 '绑定值'。在 MatBlazor.BaseMatInputComponent1[[System.String,System.Private.CoreLib,Version=5.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e]].SetParametersAsync(ParameterView parameters) at Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewComponentFrame(DiffContext& diffContext,Int32 frameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(DiffContext& diffContext,Int32 frameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext,Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext,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,ArrayRange1 oldTree,ArrayRange`1 newTree) 在 Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder,RenderFragment renderFragment) 在 Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry) 在 Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)