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

Blazor表单无法获取输入框值的问题求助

Blazor表单值不更新与提交逻辑异常问题解析

一、提交逻辑始终显示“Worked!”的根本原因

你当前的判断条件是if (person != null),但person是在组件初始化时就创建的实例(Person person = new Person();),无论Name属性是否为空,这个对象本身永远不会为null,因此该条件永远成立,自然一直输出“Worked!”。

你需要将判断目标改为person.Name是否为空或空白字符串,修正后的提交逻辑如下:

private void FormSubmit()
{
    if (!string.IsNullOrEmpty(person.Name))
    {
        displaySuccess = "Worked!";
        styleColor = "Green";
    }
    else
    {
        displaySuccess = "Wrong!";
        styleColor = "red";
    }
}

二、输入框文本不更新表单值的可能解决方向

  1. 调整绑定触发时机
    @bind-Value默认在输入框失去焦点时同步值到Model,若需要实时同步(输入时立即更新),需添加@bind-Value:event="oninput":
<InputText id="name" @bind-Value="person.Name" @bind-Value:event="oninput" />
  1. 添加验证约束(可选)
    如果需要限制Name为必填项,需给Person类的Name属性添加[Required]验证特性,配合DataAnnotationsValidator实现表单验证,此时空值会触发验证失败,不会进入OnValidSubmit:
using System.ComponentModel.DataAnnotations;

// ...

class Person
{
    [Required(ErrorMessage = "Name is required")]
    public string? Name { get; set; }
}

同时可以在表单中添加验证消息提示:

<InputText id="name" @bind-Value="person.Name" />
<ValidationMessage For="@(() => person.Name)" />
  1. 确认组件状态更新
    若使用Blazor Server,确保组件状态能正常触发重新渲染。你的代码中提交后修改了displaySuccess和styleColor,这些值的变更会自动触发组件渲染,无需额外处理;如果是手动更新Model后需要强制渲染,可调用StateHasChanged()方法(当前场景无需)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:28:11