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

Blazor中bind-Value绑定后EditForm无法更新变量问题求助

问题原因及解决方法

你的问题出在EditForm的属性绑定语法错误,导致表单没有正确关联到tmp实例,输入的值无法绑定到对应的属性上。

错误点

你在EditForm中写了:

<EditForm Model="tmp" OnSubmit = "OnSubmit" FormName="sample">

这里的Model和OnSubmit属性没有使用@符号,Blazor会将它们当作普通字符串处理,而不是绑定到你定义的C#变量和方法。因此表单无法关联到tmp实例,InputText的绑定自然失效,提交时tmp.CName和tmp.CDate始终为null。

修正后的代码

@using System.Text.Json;
@page "/"

<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>

<EditForm Model="@tmp" OnSubmit="@OnSubmit" FormName="sample">
    <!-- 因为EditForm已经指定了Model,这里可以直接绑定属性名 -->
    <InputText @bind-Value="CName" /><br />
    <InputText @bind-Value="CDate" /><br />
    <button type="submit">Submit</button>
</EditForm>

<p>@tmp.CName changed at @tmp.CDate logged at @tmp.Date</p>

@code {
    LogObject tmp = new LogObject();
   
    public class LogObject{
        public string Date {get; set;}
        public string CDate {get; set;}
        public string CName {get; set;}
    }

    public void OnSubmit(){
        Console.WriteLine(tmp.CName + " at " + tmp.CDate);
        // 可选:记录提交时间
        tmp.Date = DateTime.Now.ToString();
    }
}

关键修正说明

  1. 添加@符号绑定:将Model="tmp"改为Model="@tmp",OnSubmit="OnSubmit"改为OnSubmit="@OnSubmit",让Blazor识别这是C#变量和方法的绑定。
  2. 简化InputText绑定:在EditForm内部,因为已经指定了Model="@tmp",所以@bind-Value可以直接写属性名(如CName),无需加上tmp.,代码更简洁。
  3. 可选:在OnSubmit方法中设置tmp.Date,记录提交时间,让页面提示信息更完整。

内容的提问来源于stack exchange,提问作者Daniel N.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:52:36