You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Blazor表单绑定对象提交返回Null值问题

Blazor .NET 8表单提交后模型字段值为Null的解决方法

问题场景

使用.NET 8开发Blazor应用,提交表单后打印控制台发现模型所有字段均为默认Null值。已创建InputAddress类实例,表单字段与类属性完成双向绑定,序列化对象为JSON后仍无有效数据。

相关代码

EditForm组件代码

<EditForm Model="@addressToBeCorrected" FormName="addressForm" OnValidSubmit="HandleValidSubmit">
    <DataAnnotationsValidator />

    <div class="form-group col-md-4">
        <label for="Number">Number</label>
        <InputText id="Number" class="form-control" @bind-Value="@addressToBeCorrected.Number" />
    </div>

    <div class="form-group col-md-4">
        <label for="Street">Street</label>
        <InputText id="Street" class="form-control" @bind-Value="@addressToBeCorrected.Street" />
    </div>

    <div class="form-group col-md-4">
        <label for="Unit">Unit</label>
        <InputText id="Unit" class="form-control" @bind-Value="@addressToBeCorrected.Unit" />
    </div>

    <div class="form-group col-md-4">
        <label for="City">City</label>
        <InputText id="City" class="form-control" @bind-Value="@addressToBeCorrected.City" />
    </div>

    <div class="form-group col-md-4">
        <label for="Postcode">Postcode</label>
        <InputText id="Postcode" class="form-control" @bind-Value="@addressToBeCorrected.Postcode" />
    </div>

    <div class="form-group col-md-4">
        <label for="Region">Region</label>
        <InputText id="Region" class="form-control" @bind-Value="@addressToBeCorrected.Region" />
    </div>

    <button type="submit" class="btn btn-primary">Submit</button>
</EditForm>

组件逻辑代码

@code {
    private Models.InputAddress addressToBeCorrected = new Models.InputAddress();

    private async Task HandleValidSubmit()
    {
        Console.WriteLine(addressToBeCorrected.Number);

        // convert the InputAddress object to a JSON string
        string json = JsonSerializer.Serialize(addressToBeCorrected);

        Console.WriteLine(json);
        // send the JSON string to the server
    }
}

InputAddress类定义

public class InputAddress
{
    public string? Number { get; set; }
    public string? Street { get; set; }
    public string? Unit { get; set; }
    public string? City { get; set; }
    public string? Postcode { get; set; }
    public string? Region { get; set; }
}

问题原因

.NET 8 Blazor中,页面默认采用静态渲染模式,该模式下组件不具备交互能力,表单输入无法与模型完成双向绑定,导致提交时模型字段保持初始Null值。

解决方法

在页面组件的顶部添加@rendermode配置,启用交互式渲染模式,示例:

@rendermode InteractiveServer

根据项目需求,也可选择InteractiveWebAssembly或InteractiveAuto渲染模式。添加配置后,组件具备交互能力,表单输入将正确绑定到模型字段。

内容的提问来源于stack exchange,提问作者Adn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:17:57